ActiveAdmin关联 - 不要永久销毁

时间:2014-03-03 13:57:04

标签: ruby-on-rails activeadmin

我有一个活跃的管理表单,如下所示:

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属性?是否所有这些都发生在使用继承资源的幕后?

1 个答案:

答案 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

一切都很好!