簡體   English   中英

如何僅驗證Rails模型的某些實例

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

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