2014-03-03 93 views
0

我有一个积极的管理形式,看起来像这样: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属性?这一切都发生在具有继承资源的幕后吗?

+0

你有一些AA给你的方法来覆盖控制器。见:http://activeadmin.info/docs/8-custom-actions.html#modify_the_controller你看过这些了吗? – meatherly

回答

0

所以我没有意识到传递一个_destroy属性与嵌套的属性一起设置为真实值,即

{ model: { id: 1, example_nested_attributes: { id: 1, name: "Example", _destroy: true } } } 

与会代表,并通过ActiveRecord的,随后调用destroy方法的处理AR模型。

的解决方案是为重写AR方法destroy像那样简单,

def destroy 
    self.touch(:deleted_at) 
end 

,一切都很好!