ruby-on-rails - 如何处理 :reject_if if a new record and not an update

标签 ruby-on-rails activerecord

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

enter image description here

我有一个 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/

相关文章:

ruby-on-rails - 将记录行返回到查看页面时 ActiveRecord 模型的奇怪行为

sql - Ruby on Rails - 动态 SQL 查询

ruby-on-rails - 尝试设置 Rails 以将 session 存储在 Postgresql 数据库中

mysql - Rails(utf-8编码问题): Active record fetching msyqldb data incorrectly

php - ORM/DAO/DataMapper/ActiveRecord/TableGateway 的区别?

javascript - 如何使用基于 token 的身份验证来保护网页?

ruby-on-rails - 如何翻译 Rails 引擎的模型和属性名称?

ruby-on-rails - REXML::ParseException 没有有效的根

ruby-on-rails - 将 Postgres 查询转换为 Rails ActiveRecord?

ruby-on-rails - Rails Ancestry gem : how to write scope to match all parents