gpt4 book ai didi

ruby-on-rails - Rails 4 has_many nested_attributes 替换所有

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:16 25 4
gpt4 key购买 nike

我想使用 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 有一些原生函数或参数来帮助我做我想做的事。

最佳答案

这是我能得到的最好的:

def days_attributes=(*attrs)
self.days = []
super(*attrs)
end

希望还不算太晚。

关于ruby-on-rails - Rails 4 has_many nested_attributes 替换所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com