2009-06-22 33 views
11

tôi đang cố gắng để tạo ra những điều sau đây:Rails - Làm thế nào để tạo ra một mô hình liên quan đến HAI của một mô hình

User model (this is fine) 

id 

Link model (associated with two Users) 

id 
user_id1 
user_id2 

Đây có phải là một ví dụ trong đó tôi muốn sử dụng các loại hiệp hội has_and_belongs_to_many trên mô hình liên kết ? Làm thế nào tôi nên làm điều này?

Cuối cùng, tôi muốn để có thể có một đối tượng người dùng và gọi @ user.links để có được tất cả các liên kết liên quan đến người dùng ...

Tôi chỉ không chắc chắn về cách tốt nhất để làm điều này trong Rails là.

Trả lời

15

Bạn sẽ rất có thể muốn hai mô hình cấu trúc như sau:

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 %> 

(. Mô hình này là từ một bài do Ryan Bates khoảng hai năm trước đây trong this discussion trên RailsForum)


Just một lưu ý: điều này bây giờ là khá cũ. Bạn có thể cân nhắc việc đánh giá các chiến lược khác để xử lý điều này trong ngữ cảnh Rails hiện đại.

+0

Awesome, cảm ơn! – cakeforcerberus

1

Bạn có thể tạo Join Mẫu rằng mối quan hệ giữa các liên kết giữa các mô hình hai người dùng

nên về cơ bản

 

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 

Các vấn đề liên quan