※ ChatGPTを利用し、要約された質問です(原文:特定のactionでのみvalidation)
特定のactionでのみバリデーションする方法
このQ&Aのポイント
特定のactionでのみバリデーションを行うための方法を知りたいです。現在はUserモデルにバリデーションを書いているが、他のアクションでもバリデーションが実行されてしまいます。
Userモデルにバリデーションを書いているが、特定のコントローラのメソッドでのみバリデーションしたいです。現在の方法では他のアクションでもバリデーションが実行されてしまいます。
Userモデルにバリデーションを書いているが、特定のコントローラのメソッドでのみバリデーションしたいです。他のアクションではバリデーションを行わないようにしたいです。
rails2、mySQLです。
モデルにバリデーションを書くのは知っているのですが
特定のコントローラのメソッドでのみバリデーションしたいとき
どうすればよいのでしょう。
Userモデルに書いた場合
class User < ActiveRecord::Base
validates_format_of :email_address, :with => /[a-zA-Z0-9_-]+\@[a-zA-Z0-9_-]+\.\w+/, :allow_blank => true, :message => "有効なEメールアドレスではないようです。"
validates_uniqueness_of :email_address, :allow_blank => true, :allow_nil => true, :message => "このアドレスは既に使用されています。"
end
class UserController < ApplicationController
def email_conf
self.index
u = User.find :first, :conditions=>["user_name = ?",@user_name ]
unless u
u = User.new(:user_name => @user_name)
end
u["email_address"] = params[:email_address]
if u.valid?
u.save
render :text => '<div>thank you!</div>'
else
render :text => "#{u.errors[:email_address]}"
end
end
end
これだとほかのアクションの場合もバリデーションを行えばこのパターンのみになりますよね。
userコントローラの email_conf でデータ登録するときのみ、このバリデーションをしたいのですが。。
お礼
ありがとうございました