Я хочу иметь a Status
модель, которая будет относительно статична после некоторого пользовательского набора (и различные пользователи может иметь различные значения на состоянии).
Состояние может относиться к различным моделям, такой как Contact
и Event
.
так состояния, возвращенные contact.status
будет отличаться от event.status
Я хочу разработать приложение так, чтобы таблица состояния имела различные типы (contacts
и events
).
Каковы правильная стратегия и формат для этого?
Я думаю об объявлении :has_one Status
в Contact
модель, и хранящий a :status_id
в :contacts
таблица. Так же с Event
.
:statuses
таблица будет иметь значение состояния, ввести, и дата.
это имеет смысл? Можно ли предложить лучший подход?
По этому вопросу есть руководство . Ваша ситуация немного отличается в том смысле, что кажется, что ваша модель статуса действительно должна быть полиморфной, поскольку разные вещи будут «статусными».
Чтобы ответить на ваш вопрос, контакт / событие has_one Status имеет для меня смысл.
Во-первых, отношение has_one не хранит идентификатор в текущей модели. Он ищет внешний ключ в относительной таблице. Чтобы сохранить status_id в контактах или событиях, вы должны использовать own_to.
Во-вторых, в зависимости от типа информации, которую вы храните в Status, почему это должна быть отдельная таблица? Почему бы не сделать столбец статуса в каждой модели, для которой вы хотите использовать статус? Здесь может быть полезно немного больше информации.