我有一个活跃的管理表单,如下所示:
form do |f|
...
f.inputs "Special Interests" do
f.has_many :special_interests, allow_destroy: true do |si|
si.input :name
end
end
end
问题在于,当我销毁关联时,我希望它为deleted_at
字段添加时间戳,以将关联记录标记为非活动状态,而不是将其擦除。如果我可以以某种方式覆盖控制器方法,其中创建/销毁模型的关联以替换我自己的实现,则可以干净地实现这一点。我想我想在AA控制器的update
方法中做这个,但不知道该怎么做。
AA如何处理从表单传递的_destroy
属性?是否所有这些都发生在使用继承资源的幕后?
答案 0 :(得分:0)
所以我没有意识到将_destroy
属性设置为真值以及嵌套属性,即
{ model: { id: 1, example_nested_attributes: { id: 1, name: "Example", _destroy: true } } }
委托给ActiveRecord并由其处理,随后调用AR模型上的destroy
方法。
解决方案就像覆盖AR方法destroy
一样简单,
def destroy
self.touch(:deleted_at)
end
一切都很好!