validates_acceptance_of terms复选框和Facebook连接

时间:2012-03-09 17:06:57

标签: ruby-on-rails facebook devise

你怎么能强迫facebook连接条款和条件接受?

在我的OmniauthCallbacksController中,我试过

@user_ipad.terms = true

用户验证仍然失败,用户被重定向到sign_up表单并显示错误消息。

/应用/控制器/ 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

感谢您的帮助, 文森特

1 个答案:

答案 0 :(得分:5)

validates_acceptance_of有一个“接受”选项。 Rails doc说:

  

:accept - 指定被视为已接受的值。默认   value是一个字符串“1”,这使得它很容易与HTML相关联   复选框。如果要验证数据库,则应将其设置为true   列,因为该属性从之前的“1”转换为真   验证

所以在你的情况下,你应该替换

@user_ipad.terms = true

with:

@user_ipad.terms = "1"