0

私はメッセージモデルを持っており、クライアント側の検証のためにさまざまなgem/jsを調べてきました。次に、アクティブモデルの検証について読み始めました。レールはかなり新しいので、ドキュメントを完全に理解していないことをお許しください。

まず、ActiveModel Validationを使用してクライアント側の検証を実行し、独自のカスタムエラーメッセージを設定できると言っているのは正しいですか?

私は私のメッセージモデルの一番上にあります

include ActiveModel::Validations

さらに読むと特定されました

私は使用する必要があります

 validates_with MyValidator

しかし、これはエラーメッセージが表示されるので機能しません

uninitialized constant Message::MyValidator

これをモデルに配置すると

私もそれを読みました-

 To cause a validation error, you must add to the record‘s errors directly from within the validators message

class MyValidator < ActiveModel::Validator
def validate(record)
record.errors.add :base, "This is some custom error message"
record.errors.add :first_name, "This is some complex validation"
# etc...
end

つまり、クライアント側で独自のカスタムエラーメッセージを追加できるということですか?

現在の私の問題は、それが何をしているのか、これらのクラスやメソッドなどをどこに置くのかについて頭を悩ませることです。誰かが私を正しい方向に向けることができれば、私は感謝します、私は本当に学びたいです

ありがとう

4

1 に答える 1

1

ActiveModel 検証は、クライアント側の検証を提供しません。クライアント側で Rails バリデーターを使用したい場合は、client_side_validations gem をお勧めします。

開始に問題がある場合は、クライアント側に移動する前に、モデルで単純な検証を 1 回実行し、それが機能することを確認することをお勧めします。たとえば、あなたのMessageクラスでは:

# app/models/message.rb
class Message
  include ActiveModel::Validations
  attr_accessor :sender
  validates :sender, presence: true
end

# in the console
m = Message.new

m.valid?                #=> false
m.errors.full_messages  #=> ["Sender can't be blank"]

validates次に、長さや形式など、他のタイプの の作業を開始し、validateメソッドを使用してカスタム検証を行い、最終的に必要になった場合は、 を使用した完全な検証クラスを使用しvalidates_withます。

于 2012-11-24T14:23:11.820 に答える