У меня есть две модели ActiveRecord с hasMany/belongsTo ассоциации:Использование ActiveRecord belongs_to с двумя ключами
class User < ActiveRecord::Base
has_many :letters
end
class Letter < ActiveRecord::Base
belongs_to :user
end
Модель Пользователь имеет revision_number атрибут, к которому я хотел бы определения области belongs_to ассоциации, поэтому письмо связан с пользователем как user.id, так и user.revision_number.
Я попытался с помощью: ключевые условия, как документированы в API документации:
class Letter < ActiveRecord::Base
belongs_to :user, :conditions => "revision_number = #{client_revision}"
end
, но это пытается вызвать клиент-версию на классе Letter, а не экземпляр Letter. Может ли кто-нибудь указать мне в правильном направлении для правильного определения ассоциации belongs_to?
Я использую плагин acts-as-revisable для версии модели пользователя.
Если вы хотите, вы можете обладать текущим значением до последней версии updated_at и использовать has_one. Это позволит избежать добавления другого внешнего ключа в модель письма. –
Привет, Спасибо за ваши ответы. Я использую плагин act_as_revisable. В моей базе данных пользователи версируются так, что любые изменения в пользовательской модели проверяются. Письма не являются версиями. Текст письма содержит связанные значения, например имя пользователя. При просмотре письмо должно отображать имя клиента во время создания письма. Возможно, лучшим примером может служить продукция по счетам-фактурам; цена продукта должна быть зафиксирована в счете-фактуре, так что просмотр счета-фактуры в течение нескольких месяцев после строки покажет правильную цену в момент создания счета-фактуры. Спасибо, Chris –