【发布时间】:2015-02-18 18:55:23
【问题描述】:
我想使用nested_attributes 将我所有的旧关联对象替换为新对象。最好的方法是什么?
如果我使用下面的代码,每次我使用nested_attributes 更新我的主对象时,都会创建相关的新对象。
accepts_nested_attributes_for :days
编辑
我已经通过下面的before_validation 回调得到它:
def replace_days
db_days = days.where('id IS NOT NULL')
all_days = days
all_days -= db_days
self.days = all_days
end
问题在于我对子模型的独特验证。 Rails 将访问数据库以验证唯一性。由于我的替换在验证时刻不在数据库中,因此出现验证错误。不知道如何绕过这个,如果这是最好的方法。我希望 Rails 有一些原生函数或参数,可以帮助我做我想做的事。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 nested-attributes