小编inc*_*chr的帖子

跳过 Rails 中多态关联的验证

我正在尝试保存一个名为“上传”的模型,该模型具有一个名为“可上传”的多形关联。

现在我正在做一个 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)

但这不起作用。

ruby-on-rails

2
推荐指数
1
解决办法
2256
查看次数

标签 统计

ruby-on-rails ×1