0

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

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

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

4

1 回答 1

1

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

  • 给定一个事件,将哪些项目带到事件中?

  • 给定一个事件,谁来参加这个事件?

  • 给定一个事件,谁带来了哪个项目?

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

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 总决赛。

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

于 2012-07-05T20:51:11.310 回答