我將我的 rails 應用程式升級到 7,發現它errors[:base]不再作業并且沒有按預期進行驗證。即使記錄無效,也會保存記錄。
下面是我的驗證方法代碼
def file_validation
if well_list_file.attached?
if well_list_file.byte_size > 1000000
errors[:base] << I18n.t('well_list.size_limit')
end
if well_list_file.filename.extension_without_delimiter != 'csv'
Rails.logger.error "in error"
errors[:base] << I18n.t('well_list.invalid_csv')
end
end
end
下面的控制器代碼
def create
@api_csv = ApiCsv.new(api_csv_params)
respond_to do |format|
if @api_csv.save
format.json { render json: @api_csv, status: :created}
else
error_msg = @api_csv.errors.full_messages.join('<br/>')
format.json { render json: {message: error_msg}, status: :unprocessable_entity }
end
end
end
在控制臺中我看到in error但save成功了。
這在rails 5.2. 有關如何解決此問題的任何幫助都會很棒。謝謝。
uj5u.com熱心網友回復:
我無法解釋為什么,但我自己測驗我能夠重現這個錯誤,但是使用:
errors.add(:base, 'foo')
代替:
errors[:base] << 'foo'
作業并阻止記錄保存。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454809.html
