Я относительно новичок в Rails, и я пытаюсь найти идеальную модельную структуру для своего приложения, которое является простым напоминанием для домашнего обслуживания. Центральная модель в приложении - это дом.Структура модели в Rails
В каждом доме есть много приспособлений (например, посудомоечная машина, прачечная, водонагреватель и т. Д.).
У каждого устройства есть набор напоминаний, связанных с ним (т. Е. Если у вас есть водонагреватель, вы должны делать XYZ каждые 3 месяца и ABC каждые 6 месяцев).
На регулярной основе (ежемесячно/еженедельно) есть почтовая программа, отправленная владельцу дома со списком всех напоминаний.
Я пытаюсь выяснить, какая модель наилучшей модели для этого.
Прямо сейчас, это модели, которые у меня есть, но я не знаю, является ли это излишним или нет?
- Главная (Адрес, почтовый индекс и т.д.)
- Appliance (Имя, Производитель)
- Reminder (APPLIANCE_ID, напоминание, частота)
- HomeAppliance (Home_ID, APPLIANCE_ID)
- HomeReminders (Home_ID , Reminder_ID)
Объединения:
- Главная has_many HomeAppliances
- Appliance has_many Напоминания
- Главная HAS_MANY HomeReminders
Любая помощь приветствуется.
Спасибо, это то, что я изначально думал, но не приведет ли это к столь много повторяющейся информации в БД? Например, если в Доме есть несколько устройств, таблица Appliance будет иметь несколько строк для каждого Home, каждая строка содержит подробную информацию об устройстве. Кроме того, если Appliance has_many Reminders, информация напоминания для каждого устройства будет повторяться в каждой строке таблицы напоминаний. Каждое напоминание может содержать абзац информации. Я думал о моделировании этого, похожего на то, как модели «отношения» моделируются между пользователями здесь: http://goo.gl/UofDw. Мысли? – tarunsachdeva
Вот почему я создал модели, похожие на «Отношения» для дома (HomeAppliance и HomeReminder). – tarunsachdeva
Если вы беспокоитесь о нехватке места из-за дублирования, то да, добавление таблицы поиска для домашнего -> отображения устройств - хорошая идея. Я все равно использую has_many: через отношение, чтобы избежать наличия таблицы поиска отношений, предполагая, что все, что она делает, - это сопоставление устройств с напоминаниями. –