0

假设我有 2 个模型:设备和设置。我需要跟踪和控制每台设备的设置。设备和设置的数量将随着时间的推移而增长。显然是多对多的情况,所以我打算使用“has_many :through”方法,第三列是 device_settings 表中的设置值。

我的挑战是,随着新设置的添加,我想确保所有设备都在 device_settings 表中填充了所有设置(设置模型有一个 default_value 属性,可用于填充 device_settings.value 属性)。一旦将设置添加到表中,就很容易确保新设备或编辑的设备插入新的设置行。但是有没有一种干净的方法来改造现有设备?

在某些时候系统会更新设备设置,我想避免在此过程中处理缺失值的复杂逻辑。我认为最好强制桥表首先包含所有行。

我可以并且已经编写了一些丑陋的代码(循环等)来填充设置模型上 :after_save 上的 device_settings 表,但我正在寻找更清洁的东西。

谢谢

4

1 回答 1

0

这符合要求吗?

SettingsController

  def create
   ...
    if @setting.save
      Device.all.each {|d| d.settings << @setting}
    end
  end
end
于 2013-07-08T21:18:47.350 回答