我试图保存名为Upload的模型,该模型具有名为uploadable的多元关联。
现在我正在做一个dropzone js区域,用户可以拖放文件,它应该在服务器端创建上传,然后返回一些将添加到html中的密钥,并且只有在用户保存表单(如果用户保存表单,我将使用刚创建的评论设置uploadable_id和uploadable_type,否则上传将在24小时内通过cronjob自动删除)
我遇到的唯一问题是当我执行@ upload.save
时,rails会自动希望uploadable_id e uploadable_type存在如何仅针对uploadable属性跳过验证(在线状态)?我想避免使用@ 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
然后我这样做:
@upload = Upload.new
@upload.file = params[:file]
@upload.skip_uploadable_validation = true
@upload.save # it fails anyway
但它不起作用。
答案 0 :(得分:0)
您可以将optional: true
放到此行:
belongs_to :uploadable, polymorphic: true, optional: true
或者用这种方式:
with_options unless: :skip_uploadable_validation do
validates :uploadable_id, presence: true
validates :uploadable_type, presence: true
end