单个表继承或有许多直通式轨道



我认为这是一个简单的问题,但无法弄清楚我的确切答案。

我有一个Event列表,其中包含:People, Food, Costs, To-Do, etc.所有信息项。如果存在相关数据项,我不必检查每个相应的表,而是希望能够计算或抓取属于给定Event的所有Items

这是用 HMT 最容易做到的吗?起初我想到 STI,但不确定这是否有意义,因为它们共享的共同数据很少(除了时间戳和创建者)。

我认为你把你的模式设计过于复杂了。这些是可以使用给定的模型回答的一些问题:

  • 给定一个事件,活动带来了哪些物品?

  • 给定一个活动,谁来参加活动?

  • 给定一个事件,谁带来了哪个物品?

- 给定一个事件,有哪些活动?

class Event < ActiveRecord::Base
  has_many_and_belongs_to_many :items
  has_many_and_belongs_to_many :todos
  has_many :people, :through => :attendances
end
class Attendance < ActiveRecord::Base
  belongs_to :event
  belongs_to :person
end
class Person < ActiveRecord::Base
  has_many :events, :through => :attendances
end
class Item < ActiveRecord::Base
  has_many_and_belongs_to_many :events
end
class Todo < ActiveRecord::Base
  has_many_and_belongs_to_many :events 
end

此模型假定:

  • 一个项目可以带到两个不同的事件中。例如,篮球可以在 2012 年 NBA 总决赛和 2011 年 NBA 总决赛期间参加。

  • 一个活动可以在两个不同的事件中完成。例如,在家庭聚会和早餐时都可以喝啤酒

最新更新