Rails 4 如何检查嵌套属性 _destroy 标志是否在模型中设置
Rails 4 how to check if nested attributes _destroy flag is set from within model
我的模型(容器)接受嵌套属性(包括 allow_destroy
)以与另一个模型 (reuse_request) 建立 has_one
关系。容器模型中有一个 before_validation
回调,我不想 运行 如果 reuse_request 即将在同一更新中被销毁。
有没有办法检查 _destroy
属性是否已从容器模型 before_validation
回调中传递?
#container.rb
before_validation :set_code
has_one :reuse_request_as_previous, class_name: 'ReuseRequest', foreign_key: 'previous_container_id', dependent: :destroy, inverse_of: :previous_container
accepts_nested_attributes_for :reuse_request_as_new, :allow_destroy => true
def set_code
if reuse_request_as_new && reuse_request_as_new.previous_container
self.code = reuse_request_as_new.previous_container.code
end
end
使用.marked_for_destruction?
怎么样?
def set_code
return if reuse_request_as_new.marked_for_destruction?
...
end
我的模型(容器)接受嵌套属性(包括 allow_destroy
)以与另一个模型 (reuse_request) 建立 has_one
关系。容器模型中有一个 before_validation
回调,我不想 运行 如果 reuse_request 即将在同一更新中被销毁。
有没有办法检查 _destroy
属性是否已从容器模型 before_validation
回调中传递?
#container.rb
before_validation :set_code
has_one :reuse_request_as_previous, class_name: 'ReuseRequest', foreign_key: 'previous_container_id', dependent: :destroy, inverse_of: :previous_container
accepts_nested_attributes_for :reuse_request_as_new, :allow_destroy => true
def set_code
if reuse_request_as_new && reuse_request_as_new.previous_container
self.code = reuse_request_as_new.previous_container.code
end
end
使用.marked_for_destruction?
怎么样?
def set_code
return if reuse_request_as_new.marked_for_destruction?
...
end