我正在研究Ruby on rails 2.3.8,並且我想構建一個功能來跟蹤用戶。關注用戶邏輯
爲此,我創建了2個表:用戶和以下,用他們各自的模型:
class User < ActiveRecord::Base
has_and_belongs_to_many :followings, :foreign_key => "follower_id"
end
class Following < ActiveRecord::Base
has_and_belongs_to_many :users, :foreign_key => "follower_id", :class_name => "User"
end
現在,當我嘗試執行current_user.followings.all
(憑有效CURRENT_USER的當然),它會拋出以下例外:
'followings_users' doesn't exist: SELECT 'followings'.* FROM `followings` INNER JOIN 'followings_users' ON 'followings'.id = 'followings_users'.following_id WHERE ('followings_users'.follower_id = 1)
我無法完成此項工作。我不知道爲什麼它要求我提供「followings_users」表。如果我想稱之爲「跟隨」,該怎麼辦?
我在這裏做錯了什麼?
因此,我最好的選擇是分別更改following_user和following_users的模型和表名稱? – 2010-07-29 17:53:38
您只需添加':join_table'選項即可。當我們不使用傳統命名時,我們可以使用這個選項來指定連接表名。 – 2010-07-29 17:57:28
我應該在哪個模型中添加該選項?它應該是:join_table =>'followings'?因爲我已經在User和Following模型上試過了,它向我投擲了以下內容,因爲它試圖「自己加入」:不是唯一的表/別名:'followings':SELECT'followings'。* FROM'followings' INNER JOIN 'followings' ON'followings'.id ='followings'.following_id WHERE('followings'.follower_id = 1) – 2010-07-29 18:01:45