1

validatesRails 3では、保存や作成を行わずに、モデルのオプションを使用して属性の値が有効かどうかを確認したいと思います。

AJAX APIのバックエンドを作成しています。これは、ユーザー名を

validates :username, :length => {:minimum => 2, :maximum => 50}, :exclusion => {:in => RESERVED_USERNAMES}, :format => MY_REGEX, .etc

ユーザーモデル。これは、登録フォームのユーザー名フィールドの横に小さなチェックマークまたはクロスを作成するためのものであるため、ユーザーはユーザー名が取得されているかどうかを確認するのを待つ必要はありません。

正規表現と比較することもできますが、コードをDRYに保つには、ユーザーモデルで検証を使用する方がよいと思いました。

誰もが私が次のようなことをする方法を知っています:

username = params[:username]

if User.not_found(:username => username) && User.validate(:username => username)
    #yay!
else
    #nope
end

(私はすでにnot_found働いています)。

4

2 に答える 2

2

すべての検証を実行することに加えて、ユーザー名に関連する特定のエラーをチェックすることを試みることができます(エラーメッセージを取得するために行う必要があります)。

@user = User.new(params[:user])
if @user.invalid? && @user.errors[:username].any?
  # yay!
else
  # nope
end

使用されるメソッド(#newや#valid?を含む)は実際にはオブジェクトを保存しないため、ユーザーをデータベースに永続化せずに実行できます。

于 2013-01-27T19:54:18.033 に答える
0

ユーザー名パラメーターを使用して新しいユーザーを作成し、エラーを調べることができます。

@user = User.new( :username => params[:username] )
@user.valid?    

if @user.errors.include? :username
  # username error
end
于 2013-01-27T21:16:11.673 に答える