Подтвердить что ты не робот

Принять условия использования рельсов

Каков наилучший способ добавить проверку для принятия условий использования в приложении rails?

Кажется, я не получаю validates_acceptance_of, работающий совершенно правильно. Я добавил bool в мою модель пользователя (это было необходимо?). Затем установите флажок, который возвращает true/false.

Я чувствую, что просто делаю глупую небольшую ошибку. Любые идеи?

4b9b3361

Ответ 1

В вашей модели

validates_acceptance_of :terms

Если вы используете attr_accessible в своей модели, убедитесь, что вы также добавили

attr_accessible :terms

По вашему мнению,

<%= form_for @user do |f| %>
  ...
  <%= f.check_box :terms %>
  ...
<% end %>

Нет необходимости в дополнительном столбце в таблице users, если вы не планируете отказывать в доступе к пользователям, которые не приняли условия обслуживания, которых не будет, поскольку они не могут завершить регистрацию в первую очередь.

Ответ 2

Это рабочее решение Rails 4:

Условия обслуживания не обязательно должны быть столбцом в базе данных

Форма

= f.check_box :terms_of_service

модели /user.rb

validates :terms_of_service, acceptance: true

И самое главное, разработка будет дезинфицировать ваши параметры и условия обслуживания будут удалены из представленных параметров. Итак:

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  before_filter :configure_permitted_parameters

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:full_name,
        :email, :password, :password_confirmation, :terms_of_service)
    end 
  end
end