флажок validates_acceptance_of условий и подключение к Facebook - PullRequest
1 голос
/ 09 марта 2012

Как вы можете принудительно принять условия и условия при подключении к Facebook?

В моем OmniauthCallbacksController я попытался

@user_ipad.terms = true

Проверка пользователя по-прежнему не проходит, и пользователь перенаправляется в форму sign_upс сообщением об ошибке.

/ 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 / User

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

Спасибо за помощь, Винсент

1 Ответ

5 голосов
/ 10 марта 2012

validates_acceptance_of имеет опцию «принять». Док Rails говорит:

: принять - указывает значение, которое считается принятым. По умолчанию значение представляет собой строку «1», которая позволяет легко относиться к HTML флажок. Это должно быть установлено в true, если вы проверяете базу данных столбец, так как атрибут является типом от «1» до истины перед проверка.

Так что в вашем случае вы должны заменить

@user_ipad.terms = true

с:

@user_ipad.terms = "1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...