如何处理a:reject_if如果是新记录而不是更新

时间:2012-05-20 02:29:06

标签: ruby-on-rails activerecord

我正在处理一些涉及上传图片的表单。添加标准的两种表单以及当前关联的所有表单。它看起来像这样:

enter image description here

我有一个资产类,对于其他涉及的类(例如位置,项目)是多态的。问题是可以上传或更新项目。对于项目和位置,我有以下内容:

accepts_nested_attributes_for :assets, :allow_destroy => true, :reject_if => lambda { |a| a[:asset].blank? } 

但是如果没有上传的文件,这似乎拒绝了。如果它是一个新文件,这基本上是我们想要的,但有些情况下我们只是通过资产ID更新描述。以上:reject_if将拒绝该场景。如何更新这种其他类型的信息?

THX

1 个答案:

答案 0 :(得分:2)

我通过在params[:id]块上添加reject_if条件来解决它。对于您的示例,它看起来像这样:

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

任何现有记录都应该在嵌套哈希中返回id属性,因此这应允许更新现有嵌套记录,同时仍允许您拒绝没有asset的新记录(因为新记录)还没有id)。

相关问题