[英]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.