2010-03-22 6 views
0

J'ai 3 modèlesRails ActiveRecord- has_many à travers et appartient à un modèle associé

sites, user_favorites et les utilisateurs. Relations pertinentes:

class Site < ActiveRecord::Base 
    has_many :users, :through => :user_favorites 

class UserFavorite < ActiveRecord::Base 
    belongs_to :user, :counter_cache => true 
    belongs_to :site 
end 

class User < ActiveRecord:Base 
    has_many :user_favorites 
    has_many :sites, :through => :user_favorites 

Tout cela fonctionne très bien. J'aimerais ajouter un nouvel attribut au modèle Site pour indiquer quel utilisateur l'a créé.

Je ne crois pas que cela constitue un has_and_belongs_to_many scénario. Un site a de nombreux utilisateurs à travers les user_favorites mais je veux qu'il appartienne à un seul utilisateur reflétant le propriétaire/créateur. Je me demande quelle est la meilleure pratique ORM pour cela. En SQL, j'utiliserais simplement des jointures différentes en fonction de ce que j'essayais d'interroger avec un FK created_by dans Site. Désolé si je manque quelque chose de basique ici.

Merci

Répondre

0
class Site < ActiveRecord::Base 
    belongs_to :creator, :class_name => 'User' 
    # ... 
end 

devraient être suffisantes. Droite? Vous pouvez avoir plusieurs relations entre les mêmes modèles, mais vous trouverez extrêmement utile à des fins organisationnelles de les nommer explicitement lorsque tel est le cas.

+0

fonctionne parfaitement, fait parfaitement sens. Appréciez l'aide qui m'entoure encore autour de l'ORM. – Nick

Questions connexes