2012-03-09 13 views
1

Facebookとの契約条件を強制するにはどうすればいいですか?私OmniauthCallbacksControllerでvalidates_acceptance_of termsチェックボックスとFacebook接続

私は、ユーザーの検証がまだ失敗し、ユーザーは、エラーメッセージをsign_upフォームにリダイレクトされます

@user_ipad.terms = true 

を試してみました。あなたの助けのための

/アプリ/コントローラ/ OmniauthCallbacksController

 @user_ipad = UserIpad.new(:password => Devise.friendly_token[0,20]) 
     @user_ipad.update_with_facebook_infos(omniauth) 
     @user_ipad.authentication_ways.build(:provider => omniauth['provider'], :uid => omniauth['uid']) 
     @user_ipad.terms = true 

     if @user_ipad.save() 
     sign_in_and_redirect @user_ipad, :event => :authentication 
     else 
     session["devise.facebook_data"] = omniauth 
     render :action=>'new', :controller=>'user_ipads', :layout => 'empty_layout' 
     end 

/アプリ/モデル/ユーザー

attr_accessible :terms 
    ... 
    validates_acceptance_of :terms, :allow_nil => false, :message => "Vous devez accepter les conditions générales d'utilisation", :on => :create 

おかげで、 ヴィンセント

答えて

5

validates_acceptance_ofは、 "受け入れる" オプションがあります。 Rails doc:

:accept - 受け入れられるとみなされる値を指定します。 のデフォルト値は文字列 "1"で、HTML チェックボックスに関連付けるのが簡単です。データベース 列を検証する場合はtrueに設定する必要があります。これは、属性が の検証前に1から真に型変換されているためです。

だからあなたの場合には、あなたが

@user_ipad.terms = true 

を交換する必要があります。

@user_ipad.terms = "1"