2017-03-10 42 views
-1

我試圖創建的has_many:使用「主表」兩次通過關係:的has_many:通過使用「主表」兩次

"Diagram of the relation"

我可怎麼辦呢?

+0

什麼是你想要的方向?誰有很多什麼? – Jeremie

+0

你的問題不清楚。你想達到什麼目標? –

+0

@Jeremie用戶有很多友誼。一個友誼有很多用戶 –

回答

0

假設你有這樣的:

Table: friendships 
    id   : integer   
    friend_id : integer 
    friend_of_id : integer 

class Friendship < ActiveRecord::Base 
    belongs_to :friend, class: :user, inverse_of: 
    belongs_to :friend_of, class: :user, inverse_of: 
end 

class User < ActiveRecord::Base 
    has_many :friendships, class: :friendship, foreign_key: :friend_of, inverse_of: friend_of 
    has_many :friends,  through: :friendships 
    has_many :friendships_of, class: :friendship, foreign_key: :friend, inverse_of: :friend 
    has_many :friends_of,  through: :friendships 
end 

我希望我所有的權利,缺乏良好的術語使得混亂,如果你能拿出更好的東西那麼這將使它更容易。

鑑於這種代碼,你可以添加:

class User < ActiveRecord::Base 
    ... 
    def add_friend(friend) 
    # left out checking if they are already a friend 
    friendships.create!(friend: friend) 
    friendships_of.create!(friend_of: friend) 
end 
end