可以标记要删除的关联对象

时间:2014-04-03 08:27:05

标签: ruby-on-rails

我有一个与另一个相关的模型。如果原始模型将被保存,是否可以标记要删除的关联模型?在原始模型中,accepted_nested_attributes_for:ass_model被激活。

由于

3 个答案:

答案 0 :(得分:1)

是的,这是可能的。您只需要将allow_destroy: true选项添加到accepts_nested_attributes_for并将_destroy: true作为嵌套属性传递。

答案 1 :(得分:0)

简短回答:

长答案(复制自http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html):

class Member < ActiveRecord::Base
  has_one :avatar
  accepts_nested_attributes_for :avatar, allow_destroy: true
end
  

现在,当您将_destroy键添加到属性哈希值时,其值为true,您将销毁关联的模型:

member.avatar_attributes = { id: '2', _destroy: '1' }
member.avatar.marked_for_destruction? # => true
member.save
member.reload.avatar # => nil

答案 2 :(得分:0)

如果您是在代码中执行此操作,而不是应用某些表单属性,则只需在模型上调用mark_for_destruction

member.avatar.mark_for_destruction
member.save # this deletes the avatar

Documentation on APIDock