Rails中的模型结构

时间:2012-04-28 15:46:03

标签: ruby-on-rails

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

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

每个设备都有一组与之关联的提醒(例如,如果您有热水器,则必须每3个月进行一次XYZ,每6个月进行一次ABC)。

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

我试图找出最适合的模型结构。

现在,这些是我的模特,但我不知道这是否有点过分?

  • 主页(地址,邮政编码等)
  • 设备(名称,制造商)
  • 提醒(Appliance_ID,提醒,频率)
  • HomeAppliance(Home_ID,Appliance_ID)
  • HomeReminders(Home_ID,Reminder_ID)

协会:

  • Home has_many HomeAppliances
  • 设备has_many提醒
  • Home has_many HomeReminders

感谢任何帮助。

1 个答案:

答案 0 :(得分: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

有关has_many :throughhttp://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

的更多信息,请参阅此处的文档示例

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