簡體   English   中英

如何驗證 Rails 中的字段,Active:Model::Validator

[英]How to Validate Field in Rails, Active:Model::Validator

我正在嘗試編寫一個驗證器,如果銷售狀態為非活動狀態,它只會更新一本書的價格。

# frozen_string_literal: true

class BookPriceValidator < ActiveModel::Validator
  def validate(record)

    record.errors[:price] << "can't change price on book" if record.selling == "active"
  end
end

我現在遇到的問題是,即使圖書價格沒有更新,也會調用錯誤。 僅當 :price 字段實際更改時,我如何才能調用此錯誤?

您可以將條件更改為

if record.price_changed? && record.selling == "active"` 

ActiveModel::Dirty跟蹤對ActiveRecord對象所做的非持久性更改,並為每個屬性添加便利方法作為[attribute_name]_changed? . 因此,您所要做的就是檢查價格是否隨您當前的狀況而變化。

暫無
暫無

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

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