2009-06-22 19 views
11

en fazla İKİ bağlı bir model oluşturmak için:Raylar - aşağıdaki oluşturmaya çalışıyorum Başka bir modelin

User model (this is fine) 

id 

Link model (associated with two Users) 

id 
user_id1 
user_id2 

bu ben Bağlantı modeline has_and_belongs_to_many dernek türü kullanmak isteyeceği bir örnek var mı ? Bunu nasıl yapmalıyım?

Sonuçta, ben en iyi yolu bu ne yapacağını pek emin değilim ... Bir kullanıcı nesnesi sahip ve söz konusu kullanıcıyı ilgili tüm bağlantıları almak için user.links @ arama yapabilmek için

istiyorum Rails'de.

cevap

15

aşağıdaki gibi çok büyük olasılıkla iki model yapılandırılmış istediğiniz olacak: Sadece

class User < ActiveRecord::Base 
    has_many :friendships 
    has_many :friends, :through => :friendships #... 
end 

class Friendship < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id' 
end 

# ...and hence something like this in your view 
<% for friendship in @user.friendships %> 
    <%= friendship.status %> 
    <%= friendship.friend.firstname %> 
<% end %> 

(. Bu model RailsForum üzerinde this discussion sırasında yaklaşık iki yıl önce Ryan Bates tarafından yapılan bir yayından olduğu)


Bir not: Bu şimdi oldukça eski. Bunu modern bir Rails bağlamında ele almak için diğer stratejileri değerlendirmeyi düşünebilirsiniz.

+0

Müthiş iki kullanıcının modelleri

arasındaki Bağlantı arasındaki ilişki, teşekkürler! – cakeforcerberus

1

A Model Üyelik oluşturabilmeleri temelde

 

class User 

    has_many :links, :through => :relationships 

end 

class Relationship 

    belongs_to :user_id_1, :class=> "User" 
    belongs_to :user_id_2, :class=> "User" 

end 

İlgili konular