2012-11-25 7 views
1

Je travaille sur une application médicale. Dans celui-ci, j'ai des associations entre les utilisateurs et les clients (évidemment), et une association entre les utilisateurs et les traitements, et les utilisateurs et les paramètres (pour une table de paramètres).Association à plusieurs niveaux dans Rails?

Mais la partie délicate ici est que le client doit aussi être associé à la table des traitements, car ce sont eux qui ont les traitements sur leur dossier. L'utilisateur est simplement celui qui administre tout ce qui précède. Et nous avons aussi des patients qui sont associés à des clients, il faudra donc plusieurs niveaux. Les propriétaires ont donc des clients qui ont aussi des patients. Et les patients ont des traitements comme les clients et les propriétaires.

Cela me semble vraiment complexe et j'ai du mal à obtenir autre chose que du travail. J'utilise la configuration de base de la relation dans Rails (je sais très peu de choses sur les rails). J'utilise @ treatment.user = current_user sur la méthode create, puis j'associe simplement les tables nécessaires avec un user_id. Je mets un client_id sur la table de traitement, mais ça ne marchera pas, n'est-ce pas?

Ai-je besoin d'une association polymorphe (je ne suis pas sûr de ce que c'est)? OU ai-je besoin de tables séparées pour effectuer toutes ces correspondances?

Merci.

code:

class User < ActiveRecord::Base 
# Include default devise modules. Others available are: 
# :token_authenticatable, :confirmable, 
# :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

# Setup accessible (or protected) attributes for your model 
attr_accessible :email, :password, :password_confirmation, 
       :remember_me, :role 

    validates :email, presence: true 
    has_many :clients 
    has_many :settings 
    has_many :treatments 

    ROLES = %w[admin receptionist practitioner] 

    def role_symbols 
    [role.to_sym] 
    end 

    def to_s 
    email 
    end 

end 
+1

pourriez-vous fournir plus d'informations sur l'association entre tous les modèles? Un utilisateur (celui qui introduit des données dans le système?) A de nombreux clients (médecins?) Et de nombreux traitements (pourquoi?). Chaque client a beaucoup de patients, chaque patient a un (?) Client? Comment les propriétaires prennent-ils en compte? J'ai essayé de dessiner un diagramme de classe UML, mais je n'ai pas pu. Pourriez-vous en fournir un? – yas4891

+0

Certainement besoin de fournir le modèle d'objet. Il n'y a aucun moyen de faire les choses correctement sans un. – vpsz

+1

En outre, pourquoi les utilisateurs ont-ils besoin d'une association aux traitements s'ils ne sont que ceux qui exécutent le système? – vpsz

Répondre

2

Je ne suis pas encore totalement sûr, ce que votre problème. Mais puisque vous avez mentionné que vous n'êtes pas familier avec Rails, cela pourrait vous aider:

Jetez un oeil à la has_many :through relation (également disponible en has_one :through)

Vous pourriez probablement faire quelque chose comme ceci:

# patient.rb 
class Patient < ActiveRecord::Base 
    has_many :treatments, :through => :client 
end 
+0

+1 car cela sera certainement utile dans cette situation. – vpsz

+0

Wow ouais ça ressemble exactement à ce dont j'ai besoin. – Dain

+0

@Dain Glad je pourrais aider. J'apprécie d'obtenir un upvote et une marque pour "meilleure réponse", cependant :-) – yas4891

Questions connexes