接受使用条款rails

Cyr*_*rus 12 validation ruby-on-rails-3

在rails应用程序中添加检查以接受使用条款的最佳方法是什么?

我似乎无法validates_acceptance_of正常工作.我在我的用户模型中添加了一个bool(这是必要的吗?).然后有一个返回true/false的复选框.

我觉得我只是犯了一个愚蠢的小错误.有任何想法吗?

小智 22

在你的模型中,

validates_acceptance_of :terms
Run Code Online (Sandbox Code Playgroud)

如果您attr_accessible在模型中使用,请确保您还添加,

attr_accessible :terms
Run Code Online (Sandbox Code Playgroud)

在你看来,

<%= form_for @user do |f| %>
  ...
  <%= f.check_box :terms %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

除非您计划拒绝未接受服务条款的用户访问权限,否则不需要在用户表中添加额外的列,因为他们无法首先完成注册.


vla*_*iov 17

这是一个有效的Rails 4解决方案:

服务条款不需要是数据库中的列

形成

= f.check_box :terms_of_service
Run Code Online (Sandbox Code Playgroud)

车型/ user.rb

validates :terms_of_service, acceptance: true
Run Code Online (Sandbox Code Playgroud)

最重要的是,设计将清理您的参数,服务条款将从提交的参数中删除.所以:

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
Run Code Online (Sandbox Code Playgroud)

  • 如果您仅在用户注册时需要验证,则可以在验证器上添加::create。 (3认同)