Наследование одной таблицы или имеет много сквозных в Rails

Я думаю, что это простой вопрос, но не смог понять мой точный ответ.

у меня есть Event список, который имеет: People, Food, Costs, To-Do, etc. все как разные информационные элементы. Вместо того, чтобы проверять каждую соответствующую таблицу, если существует связанный элемент данных, я хочу иметь возможность подсчитать или захватить все Items которые принадлежат данному Event,

Легче ли это сделать с помощью HMT? Сначала я думал о STI, но не был уверен, имеет ли это смысл, потому что они имеют очень мало общих данных (кроме меток времени и создателя).

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

Эта модель предполагает, что:

  • один предмет можно перенести на два разных события. Например, баскетбол может участвовать как в финалах NBA 2012, так и в финалах NBA 2011.

  • одно действие может быть выполнено в двух разных событиях. Например, пить пиво можно на домашнем вечере и завтраке

Другие вопросы по тегам