2012-10-05 28 views
0

我試圖在我的網站上實現一個朋友系統,並剛剛完成自我參照關聯(http://railscasts.com/episodes/163-self-referential-association)上的一個railscast(#163)。在視頻中的某一點,他與inverse_friendships表創建了一個新的關係,但我從來沒有看到他生成inverse_friendships模型或遷移。 inverse_是否與鐵軌魔術有關,還是我錯過了什麼?Rails:「inverse_friendships」從哪裏來?

型號/ user.rb

has_many :friendships 
has_many :friends, :through => :friendships 
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id" 
has_many :inverse_friends, :through => :inverse_friendships, :source => :user 

而且,他在哪裏,從獲得friends列?當他爲friendship生成腳手架時,他創建了兩列user_id:integer friend_id:integer,但在實際的朋友桌上沒有任何東西。

生成支架

script/generate nifty_scaffold friendship user_id:integer friend_id:integer create destroy rake db:migrate

回答

2

沒有這樣的表。 :class_name => "Friendship"表示它正在使用Friendship型號,該型號使用friendships表格。

+0

哦......這只是爲了讓反向關係(戀愛的人可以訪問戀人的人)也可以訪問嗎? – Edmund

+0

是的。這就是「自我指涉」的意思。該模型與自身相關聯。 – meagar