[英]How to validate only certain instances of a rails model
我看不到#black?
模型出了#black?
方法?
錯誤:
未定義的方法“黑色?” 適用車型
車模
# frozen_string_literal: true
class Cars < Base
if black?
validates :style, presence: true
end
private
def black?
color_options.include?("black")
end
end
如果我做...
validates :style, presence: true, if: :seller?
該代碼可以工作,但是我計划在if語句塊中添加更多的驗證,因此最好讓if語句塊(如果結束)正常工作。
你叫black?
在類上,而不是在類的實例上。 在這一點上,你if black?
代碼被調用,對Cars
進行self
評估! 叫Cars.black?
沒有任何意義Cars.black?
-您想知道汽車的單個實例是否為黑色!
優良作法是將所有各種驗證條件包裝到一個謂詞中,然后使用:if
語法進行引用。
例如,如果您有一組復雜的條件,則可以設置一個驗證器:
class Cars
validates :style, presence: true, if: :validate_style?
private
def validate_style?
color_options.include?("black") ||
wheel_options.include?("premium") ||
Time.now.wday == 3
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.