Rails3アプリケーションにはモデルPerson
とがありMessage
ます。メッセージは、個人に固有にすることも(メッセージperson_id
列が設定されている場合)、「グローバル」にすることもできます(person_id
列がNULLの場合)。
このようなオプションを使用して、単純なhas_many
関係を作成したいと思います。:conditions
class Person < ActiveRecord::Base
has_many :messages,
:conditions => proc { ['(messages.person_id IS NULL) OR ' +
'(messages.person_id = ?)'], self.id }
# ...
end
ただし、has_many
クラスメソッドは、PersonオブジェクトのID( ""など)と等しい外部キー制約を適用した後、"conditions"オプションを論理"AND"句としてエンコードしているようFROM messages WHERE person_id=123 AND (person_id IS NULL OR person_id=123)
です。null外部キーを持つ関連付けられたオブジェクトがそのような関連付けに属することを許可する方法はないようです。
Rails 3 / ActiveRecordはこれを行う方法を提供しますか、それとも私自身のアソシエーションのようなメソッドをハックする必要がありますか?