1
私はこの件に関して多くの質問がありますが、私のケースは少し違うと思います。has_many with foreign_keys
使用して、レール2.3.8
私は2つのモデル、ユーザとメッセージを持っています。
テーブルメッセージには、sender_idとrecipient_idの2つの列があり、両方とも参照テーブルがあります。
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 and http://asciicasts.com/episodes/163 -self-referential-association – kwarrick
Rails 2がそうであるかどうかは分かりませんが、Rails 3ではすでに動作しています。 – Azolo
named_scopesにも試してみてください。ここにいくつかの情報があります:http://archives.ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know – Ashitaka