2016-06-14 64 views
0

我目前的Cocoon /嵌套窗体工作得很好。 不过,我想改变这种行为:Rails + Cocoon:更新嵌套资源而不是销毁它

主要型号

accepts_nested_attributes_for :varietals, :reject_if => lambda { |a| a[:grape_id].blank? && a[:id].blank? }, allow_destroy: true 

删除品种物体allow_destroy相反的,我想,当它被摧毁更新其状态字段设置为0。

可以在这一行调用一个函数来做到这一点?我应该更新品种模型吗?

喜欢的东西:

varietal.update_attributes(:status => 0) 

当一个嵌套的资源被用户删除。

谢谢。

编辑:主窗体的编辑后的数据后并嵌套品种的去除,以帮助:

"varietals_attributes"=>{"0"=>{"grape_attributes"=>{"id"=>"168"}, "grape_id"=>"168", "percent"=>"20", "_destroy"=>"1", "id"=>"32709368-3496-47EA-A386-B1CCECA0BAEF"}}, 

回答

0

从我记得coocoon,它只是增加了一个属性_destroy对象哈希,所以我认为你可以在你的varietal模型的回调中处理它,并删除allow_destroy: true

+0

如果我在品种模型中添加一个像before_destroy这样的回调函数,我可以改变状态字段,但它会在刚刚破坏对象之后,不是吗?我编辑了我的消息,发布了销毁后更新的数据。 –

+0

如果您删除'allow_destroy',它不会将对象标记为销毁。 – PoloniculMov

+0

我做到了,但我的回调没有在品种模型中调用(似乎是合乎逻辑的)。 –