Наследование одной таблицы или имеет много сквозных в 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.
одно действие может быть выполнено в двух разных событиях. Например, пить пиво можно на домашнем вечере и завтраке