1
我知道關於這個主題有很多問題,但我認爲我的情況有點不同。has_many with two foreign_keys
使用Rails 2.3.8
我有兩個型號,用戶和消息。
表消息具有列sender_id和recipient_id並且都引用users表。我可以做這樣的事情:
class User < ActiveRecord::Base
has_many :messages_as_sender, :class_name => 'Message', :foreign_key => 'sender_id'
has_many :messages_as_recipient, :class_name => 'Message', :foreign_key => 'recipient_id'
def messages
messages_as_sender + messages_as_recipient
end
end
在大多數情況下,它可能就足夠了,但如果我想這樣做:
user.messages.all(:limit => 10)
or
user.messages.all(:conditions => "some condition")
的Rails提供的東西呢?
UPDATE
我希望更多的東西清楚,但我最終事端像gayavat表示感謝
自我指涉的關係在Rails的醜陋的,醜陋的野獸。要查找更多信息,您需要搜索術語「自我指涉關係」和「複合外鍵」。以下是一些資源:http://stackoverflow.com/questions/279791/is-it-possible-to-have-a-compound-foreign-key-in-rails和http://asciicasts.com/episodes/163 -self-referential-association – kwarrick 2012-03-18 06:53:37
我不知道Rails 2是否可以,但是在Rails 3中,它已經在爲你工作了。 – Azolo 2012-03-18 07:38:04
你也應該考慮給named_scopes一個嘗試。以下是更多信息:http://archives.ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know – Ashitaka 2012-03-18 14:18:23