2011-08-19 7 views
0

I私のモデルでは、以下があります:私のコントローラでは動作していない検証をオフにする

validates :name, :if => :should_validate_name?, 
       :presence => {:message => "Enter your name"}, 
       :length => { :maximum => 50 }, 
       :allow_blank => true 


    def should_validate_name? 
validating_name || new_record? 
end 

私は、次のしている:私はの存在を検証する必要はありません

def create 
     @user = User.new(params[:user]) 
     @user.validating_name = false 
     if @user.save 
     else 
     render :action => 'new' 
     end 
end 

この時点で名前を付けて、それをオフにしたい。

私は上記のコードはうまくいくと思ったが、そうではないと思った。どうしてか分かりません。

答えて

2

あなたはcreateのアクションで、新しいレコードを作成しています。たとえvalidating_nameでなくても、new_record?が真となります。

+0

検証を無効にする方法はありますか? – chell

+0

はい、 ':if'メソッドを' false'にしてください。どのような状況で、検証をスキップしますか? – Chowlett

+0

名前だけでなく電子メールだけをキャプチャしたいというフォームがあります。状況によっては、ユーザーが名前を付けずに登録できるようになり、場合によっては名前が必要になります。あなたは答えがあり、本当にこの問題を解決しました。答える時間をとってくれてありがとう。 – chell