【问题标题】:validates_acceptance_of terms checkbox and Facebook connectvalidates_acceptance_of 条款复选框和 Facebook 连接
【发布时间】:2012-03-09 17:06:57
【问题描述】:

如何通过 facebook connect 强制接受条款和条件?

在我的 OmniauthCallbacksController 中我尝试过

@user_ipad.terms = true

用户验证仍然失败,用户被重定向到带有错误消息的注册表单。

/app/controllers/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

/app/models/用户

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

感谢您的帮助, 文森特

【问题讨论】:

    标签: ruby-on-rails facebook devise


    【解决方案1】:

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

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

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

    @user_ipad.terms = true
    

    与:

    @user_ipad.terms = "1"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2021-04-03
      • 1970-01-01
      • 2012-10-14
      • 2021-12-12
      • 2016-02-18
      • 2019-02-07
      相关资源
      最近更新 更多