【问题标题】:Multiple paperclip attachments get saved without specifying a file input无需指定文件输入即可保存多个回形针附件
【发布时间】:2012-08-26 02:42:36
【问题描述】:

我有一个用户模型,它具有资产模型的 has_many 关联(标准回形针设置)。在视图中,我使用 fields_for 助手为资产设置了许多文件字段。当最终用户未指定文件时,将不会保存资产记录。这就是我想要的。到目前为止一切顺利。

然后我在 Asset 模型中添加了一个标题属性。我还在每个相应的文件字段中放置了一个文本字段。问题来了。当最终用户未指定文件或标题时,将保存资产记录。保存的记录有一个空字符串的标题,所有其他回形针属性为零。

问题是当没有文件分配给回形针属性时,如何防止资产记录被保存?而且由于资产是可选的,我不希望生成任何错误反馈。有任何想法吗?谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 associations paperclip fields-for


    【解决方案1】:

    您可以在资产模型中使用validates_presence_of :caption,但这也需要字幕。如何检查链接到用户before_validation 的所有资产上是否存在文件?可能是这样的? (可能需要一些调整)

    class User < AR::Base
      has_many :assets, :dependent => :destroy
    
      before_validation :check_assets
    
      def check_assets
        self.assets.each do |asset|
          unless asset.attachment.file?
            if asset.new_record?
              self.assets.delete(asset)
            else
              asset.destroy
            end
          end
        end
      end
    end
    

    【讨论】:

    • 好主意!这正是我想要的!非常感谢!一种调整是迭代资产副本,以便 assets.delete(asset) 表现良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2019-01-07
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多