我想要做一個模型類,它在Rails上關聯自己。基本上,用戶有朋友,也是用戶。我輸入了用戶模型類中的以下內容:在Rails中使用自定義SQL查詢中的模型編號的問題
has_many :friends,
:class_name => "User",
:foreign_key => :user_id,
:finder_sql => %{SELECT users.*
FROM
users INNER JOIN friends
ON (users.id = friends.user_id OR users.id = friends.friend_id)
WHERE users.id <> #{id}}
但有趣的事實是,它似乎每當我兩次上IRB型User.first.friends這finder_sql被調用。爲什麼?
問題是我需要一個'朋友'表,因爲用戶可以有多個朋友,並不一定像例子中那樣以分層方式。 其實我認爲它應該是has_and_belongs_to_many,但我不想爲這個關係指定角色(例如,在友誼的最後一個用戶是什麼都沒有關係)。所以我想指定一個描述這個需求的連接子句。有什麼想法嗎? – Thiago 2010-04-12 20:09:22