Я пытаюсь построить модель отношений между пользователями. Пользователь может либо инициировать отношение, либо получить отношение от другого пользователя. Поэтому таблица отношений в БД имеет внешние ключи initiator_id и receient_id.
Теперь я могу выяснить, какие отношения пользователь инициировал или получил, используя следующие ассоциации:
has_many :initiated_relations, :foreign_key => :initiator_id, :class_name => 'Relation', :dependent => :destroy
has_many :received_relations, :foreign_key => :recipient_id, :class_name => 'Relation', :dependent => :destroy
То, что я пытаюсь сделать, - это создать ассоциацию, которая выберет мне все отношения, принадлежащие пользователю (как инициированные, так и полученные) Попытка следующего не работает, и жалуется на отсутствие поля «user_id»:
has_many :relations, :conditions => 'recipient_id = #{id} or initiator_id = #{id}'
Как я могу создать ассоциацию, основанную исключительно на поле условий, не ища default_key по умолчанию? Или, может быть, существует совершенно другой подход к решению этой проблемы?