1

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

活动has_many :photos和照片belongs_to :event

足够简单

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

考虑添加:

事件has_one :key_photo, :foreign_key => "photo_id"

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

我可以向 Photo 添加一个布尔列,该列仅适用于一行(“关键”照片),但这似乎是一种浪费……如果只是一个 1 位列。

4

2 回答 2

0

对于它的价值,我会添加/使用一位列。它使您的代码更具表现力,并更好地显示代码的意图。依赖诸如“哦,它 has_one AND has_many”之类的怪癖将来会迷惑其他开发人员,例如您自己。

您首先是为其他开发人员编写的,而不是编译器或数据库。事后回来,通过 profiling使它更漂亮/优雅。这一比特导致记录存储问题的可能性充其量是微乎其微的。

于 2011-08-25T18:35:01.607 回答
0

我认为最干净的实现是在事件中为 :key_photo 增加一个 FK。

# events.rb
belongs_to :key_photo, :class_name => 'Photo'
于 2011-08-25T18:41:24.207 回答