アプリ版:「スタンプのみでお礼する」機能のリリースについて

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 でデータ登録するときのみ、このバリデーションをしたいのですが。。

A 回答 (1件)

モデルの方にコントローラー名とアクション名が渡らないので


validationをモデル内でやるのは難しいと思います
コントローラー内部で解決しましょう
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2011/09/24 01:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!