首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >validates_acceptance_of terms复选框和Facebook connect

validates_acceptance_of terms复选框和Facebook connect
EN

Stack Overflow用户
提问于 2012-03-10 01:06:57
回答 1查看 2.2K关注 0票数 1

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

在我的OmniauthCallbacksController中我尝试过

代码语言:javascript
复制
@user_ipad.terms = true

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

/app/controllers/OmniauthCallbacksController

代码语言:javascript
复制
      @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/model/User

代码语言:javascript
复制
  attr_accessible :terms
  ...
  validates_acceptance_of :terms, :allow_nil => false, :message => "Vous devez accepter les conditions générales d'utilisation", :on => :create

谢谢你的帮助,文森

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-10 22:33:19

validates_acceptance_of有一个"accept“选项。Rails文档说:

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

因此,在您的情况下,您应该替换

代码语言:javascript
复制
@user_ipad.terms = true

通过以下方式:

代码语言:javascript
复制
@user_ipad.terms = "1"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9638119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档