我认为这是一个简单的问题,但无法弄清楚我的确切答案。
我有一个Event
列表:People, Food, Costs, To-Do, etc.
所有作为不同的信息项。如果存在相关数据项,我不必检查每个相应的表,而是希望能够计算或抓取所有Items
属于给定的Event
.
使用 HMT 最容易做到这一点吗?起初我认为是 STI,但不确定这是否有意义,因为它们共享的数据很少(除了时间戳和创建者)。
我认为这是一个简单的问题,但无法弄清楚我的确切答案。
我有一个Event
列表:People, Food, Costs, To-Do, etc.
所有作为不同的信息项。如果存在相关数据项,我不必检查每个相应的表,而是希望能够计算或抓取所有Items
属于给定的Event
.
使用 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 总决赛。
一项活动可以在两个不同的事件中完成。例如,家庭聚会和早餐都可以喝啤酒