9

カスタムバリデーターがあり、失敗したときにエラーメッセージを出力しようとしていますが、出力できませんでした。私がこれを正しい場所で行っているかどうか誰かに教えてもらえますか?

class User < ActiveRecord::Base
  self.table_name = "user"

  attr_accessible :name, :ip, :printer_port, :scanner_port

  validates :name,        :presence => true,
                          :length => { :maximum => 75 },
                          :uniqueness => true                          

  validates :ip,          :length => { :maximum => 75 },
                          :allow_nil => true     

  validates :printer_port, :presence => true, :if => :has_association? 

  validates :scanner_port, :presence => true, :if => :has_association?          

  def has_association?
    ip != nil
  end
end

私はそれを次のように持っていました:

validates :printer_port, :presence => true, :message => "can't be blank", :if => :has_wfm_association?

しかし、エラーを受け取っていました

Unknown validator: 'MessageValidator'

そして、バリデーターの最後にメッセージを入れようとしたとき、has_associationを区切るコンマ?疑問符とカンマをオレンジ色に変えました

4

1 に答える 1

17

messageおよびifパラメータは、 のハッシュ内にある必要がありpresenceます。

validates :printer_port, :presence => {:message => "can't be blank", :if => :has_wfm_association?}

これは、1 行で複数の検証をロードできるためです。

validates :foo, :presence => true, :uniqueness => true

その方法でメッセージまたはif条件を追加しようとすると、Rails はメッセージ/条件を適用する検証を認識できません。代わりに、検証ごとにメッセージを設定する必要があります。

validates :foo, :presence => {:message => "must be present"},
                :uniqueness => {:message => "must be unique"}
于 2012-04-26T14:46:33.790 に答える