Ruby on Rails - Paperclip :allow_blank with if statement



一些用例背景:我没有将Paperclip用于化身或类似的东西。我希望人们进行"提交",可以包含文件或链接,这取决于他们之前选择的提交类别(实际文件正在上传到一个名为submission Details的表中,该表有submissions的外键)。有些类别具有"链接"类型,而有些类别则具有"图像"或"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]

如果有任何想法,我将不胜感激,谢谢!

通过执行包含validates_presence_of而不仅仅是validates的额外验证行来解决此问题。我制作了两种不同的方法,非链接和链接,其中一种看起来像:

validates_presence_of :attachment, if: :nonlink?

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

最新更新