我正在处理一些涉及上传图片的表单。有一个标准的两个表单要添加以及当前关联的所有表单。它看起来像这样:
我有一个 Assets 类,它对于涉及的其他类(例如位置、项目)是多态的。问题是可以上传或更新项目。对于项目和位置,我有以下内容:
accepts_nested_attributes_for :assets, :allow_destroy => true, :reject_if => lambda { |a| a[:asset].blank? }
但如果没有上传文件,这似乎会拒绝。如果它是一个新文件,这基本上就是我们想要的,但在某些情况下,我们只是通过 Assets ID 更新描述。上面的 :reject_if 将拒绝该场景。我怎样才能为更新这种其他类型的信息设置异常(exception)?
谢谢
最佳答案
我通过在 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
)。
关于ruby-on-rails - 如何处理 :reject_if if a new record and not an update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670337/