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