Ruby on Rails - Paperclip:allow_blank with if statement

时间:2014-02-24 15:59:12

标签: ruby-on-rails model paperclip

一些用例背景:我没有将Paperclip用于头像或类似的东西。我希望人们制作可以包含文件或链接的“提交”,具体取决于他们之前选择的提交类别(实际文件正在上传到名为Submission Details的表中,该表具有提交的外键)。某些类别具有“链接”类型,某些类别具有“图像”或“PDF”类型。如果他们选择了链接类别,则后续URL信息将存储在与图像/附件列不同的列中。

以下是我的模型中的代码,用于确定哪个是:

def nonlink?
  if submission.category.submission_file_type == "Mixed (PDF and Images)" || submission.category.submission_file_type == "Images Only"
    return true
  else
    return false
  end
end

理想情况下我想要:allow_blank if:nonlink?在模型的列验证区域中为true或false。

我的第一个问题是,validates_attachment_presence是否允许:allow_blank?如果没有,那么最好的选择是什么。

其次,在模型中使用:allow_blank创建if语句的语法是什么?现在我有这个,但不确定它是对的:

validates_attachment_presence :attachment, allow_blank: true, if: [:nonlink? == false]

感谢任何想法,谢谢!

1 个答案:

答案 0 :(得分:0)

通过执行包含validates_presence_of的额外验证行而不仅仅是验证来解决此问题。我做了两个单独的方法,非链接和链接,一个看起来像:

validates_presence_of :attachment, if: :nonlink?

使用这个我能够完全摆脱:allow_blank。