簡體   English   中英

跳過Rails中多態關聯的驗證

[英]Skip validation of the polymorphic association in rails

我正在嘗試保存一個名為Upload的模型,該模型具有一個稱為uploadable的多形式關聯。

現在我正在放置一個dropzone js區域,用戶可以在其中拖放文件,它應該在服務器端創建上載,然后返回一些將添加到html中的鍵,並且僅在用戶保存表單時才使用(如果用戶保存表單,我將使用剛剛創建的注釋設置uploadable_id和uploadable_type,否則上傳將在24小時內通過cronjob自動刪除)

我唯一的問題是,當我執行@ upload.save時,rails會自動希望存在uploadable_id和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

但這是行不通的。

您可以在此行中放置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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM