Bonjour,
Je débute avec RoR et je bute sur un pb depuis quelques temps maintenant. Voila ce que je cherche a faire :
Table personnes :
Table contact_fournisseurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 +-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | genre | tinyint(1) | YES | | 1 | | | nom | varchar(25) | NO | | | | | prenom | varchar(25) | YES | | NULL | | | telephone | varchar(12) | YES | | NULL | | | fax | varchar(12) | YES | | NULL | | | mobile | varchar(12) | YES | | NULL | | | mail | varchar(50) | YES | | NULL | | +-----------+-------------+------+-----+---------+----------------+
Classe Personne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 +----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | service | varchar(25) | YES | | NULL | | | personne_id | int(11) | NO | MUL | | | | fournisseur_id | int(11) | NO | MUL | | | +----------------+-------------+------+-----+---------+----------------+
Classe ContactFournisseur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Personne < ActiveRecord::Base # Une personne est : # - soit un contact d'un fournisseur # - soit un contact d'un transporteur has_one :personnel_usine has_one :contact_fournisseur has_one :contact_transporteur # Il doit impérativement avoir un nom validates_presence_of :nom end
Dans mon application, je n'ai pas accès directement a la table "personnes" car une personne est un contact soit d'un fournisseur, soit d'un transporteur (relation d'héritage). Je les créés, modifie, supprime donc a partir des contact fournisseur ou transporteur. Dans ma liste de contact fournisseur, je désire maintenant pouvoir faire une recherche multi-critères sur les données directements dans le contact mais aussi sur les données contenues dans la table personne (donc jointure) et paginer tout ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class ContactFournisseur < ActiveRecord::Base # Un contact fournisseur est une personne belongs_to :personne # Un contact fournisseur est rattaché a un fournisseur belongs_to :fournisseur end
Y a t-il une façon de faire avec RoR sans passer par 'find_by_sql' ?
Merci par avance de vos solutions ou suggestions
Partager