假设我有2个型号:设备和设置。我需要跟踪和控制每个设备的设置。设备和设置的数量将随着时间的推移而增长。很明显是一个多对多的情况,所以我将使用“has_many:through”方法,第3列用于device_settings表中的设置值。
我的挑战是,在添加新设置时,我想确保所有设备都在device_settings表中填充了所有设置(Settings模型具有default_value属性,可用于填充device_settings.value属性)。将设置添加到表后,可以轻松确保新设备或已编辑的设备插入新的设置行。但有没有一种简洁的方式来改造现有设备?
在某些时候,系统会更新设备设置,我想避免在此过程中处理缺失值的复杂逻辑。我认为最好强制桥接表首先包含所有行。
我可以并且已经编写了一些丑陋的代码(循环等)来填充设置模型上的:after_save上的device_settings表,但我正在寻找更清洁的东西。
谢谢
答案 0 :(得分:0)
这符合法案吗?
SettingsController
def create
...
if @setting.save
Device.all.each {|d| d.settings << @setting}
end
end
end