ActiveRecord关系:A has_many Bs和A has_one B可以同时进行吗?

时间:2011-08-25 18:32:19

标签: ruby-on-rails ruby-on-rails-3 activerecord activemodel has-one

我有一种情况,我不确定如何在Rails中处理:

活动has_many :photos和 照片belongs_to :event

足够简单

但是,Event还需要引用一张“关键”照片。

考虑添加:

活动has_one :key_photo, :foreign_key => "photo_id"

但这项工作是否会在上面has_many给出?如果是这样,如何处理已经说Photo belongs_to :event的照片模型中的逆?

我可以为Photo添加一个布尔列,只对一行('key'照片)为真,但这似乎是浪费...如果只有1位列。

2 个答案:

答案 0 :(得分:0)

为了它的价值,我会添加/使用一位列。它使您的代码更具表现力并更好地显示代码的意图。依靠像“哦,它has_one AND has_many”这样的怪癖,将来会混淆其他开发者,比如你自己。

您首先要为其他开发人员编写,而不是编译器或数据库。事后回来,让它更美丽/优雅,与分析。这一点将导致记录存储问题的可能性很小,充其量。

答案 1 :(得分:0)

我认为最干净的实现是在事件中有额外的FK:key_photo。

# events.rb
belongs_to :key_photo, :class_name => 'Photo'