0

我对 Rails 比较陌生,我正在尝试为我的应用程序找出理想的模型结构,这是一个简单的家庭维护提醒服务。应用程序的中心模型是 Home。

每个家庭都有许多电器(即洗碗机、洗衣房、热水器等)。

每个电器都有一组与之相关的提醒(即,如果你有热水器,你必须每 3 个月做一次 XYZ,每 6 个月做一次 ABC)。

定期(每月/每周)会向房主发送一封邮件,其中包含所有提醒的列表。

我正在尝试为此找出最佳模型结构。

现在,这些是我拥有的模型,但我不知道这是否矫枉过正?

  • 家(地址、邮政编码等)
  • 电器(名称、制造商)
  • 提醒(Appliance_ID、提醒、频率)
  • 家用电器(Home_ID、Appliance_ID)
  • HomeReminders (Home_ID, Reminder_ID)

协会:

  • 首页 has_many HomeAppliances
  • 设备 has_many 提醒
  • 首页 has_many HomeReminders

任何帮助表示赞赏。

4

1 回答 1

1

我会选择不那么复杂的东西。你需要三个模型:

class Home < ActiveRecord::Base
  has_many :appliances
  has_many :reminders, :through => :appliances
end

class Appliance < ActiveRecord::Base
  belongs_to :home
  has_many :reminders
end

class Reminder < ActiveRecord::Base
  belongs_to :appliance
end

请注意,我们使用has_many :through关系来允许我们home.reminders直接调用。

有关更多信息,请参见此处的文档示例:http has_many :through: //guides.rubyonrails.org/association_basics.html#the-has_many-through-association

在您的原始示例中,您似乎希望将各种预定义的设备存储在数据库中以供参考。我会做不同的事情。拥有一个包含各种品牌和型号的配置文件,您可以使用这些配置文件来填充用户在设置其设备详细信息时使用的表单上的下拉菜单。然后您可以跳过额外的模型并如上所述简化事情。

于 2012-04-28T16:02:53.597 回答