我正在尝试保存一个名为“上传”的模型,该模型具有一个名为“可上传”的多形关联。
现在我正在做一个 dropzone js 区域,用户可以在其中拖放文件,它应该在服务器端创建上传,然后返回一些将添加到 html 中的密钥,并且仅在用户保存表单时才使用(如果用户保存表单,我将使用刚刚创建的评论设置 uploadable_id 和 uploadable_type,否则上传将在 24 小时内使用 cronjob 自动删除)
我遇到的唯一问题是,当我执行 @upload.save 时,rails 自动希望 uploadable_id 和 uploadable_type 存在
如何仅针对可上传属性跳过(存在)验证?我想避免使用 @upload.save(validate: false) 因为它会跳过所有验证而不仅仅是一个。
我尝试过使用假属性:
class Upload < ApplicationRecord
belongs_to :uploadable, polymorphic: true
has_attached_file :file
attr_accessor :skip_uploadable_validation
validate :uploadable, unless: :skip_uploadable_validation
end
Run Code Online (Sandbox Code Playgroud)
然后我这样做:
@upload = Upload.new
@upload.file = params[:file]
@upload.skip_uploadable_validation = true
@upload.save # it fails anyway
Run Code Online (Sandbox Code Playgroud)
但这不起作用。