Ruby on rails 3 接受rails的使用条款

Ruby on rails 3 接受rails的使用条款,ruby-on-rails-3,validation,Ruby On Rails 3,Validation,在rails应用程序中添加接受使用条款检查的最佳方法是什么 我似乎无法让验证的可接受性。我在我的用户模型中添加了bool(有必要吗?)。然后有一个返回true/false的复选框 我觉得我只是犯了一个愚蠢的小错误。有什么想法吗?在您的模型中 validates_acceptance_of :terms 如果您在模型中使用的是attr\u accessible,请确保您还添加了 attr_accessible :terms 在你看来, <%= form_for @user do |f|

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

我似乎无法让
验证
的可接受性。我在我的用户模型中添加了bool(有必要吗?)。然后有一个返回true/false的复选框

我觉得我只是犯了一个愚蠢的小错误。有什么想法吗?

在您的模型中

validates_acceptance_of :terms
如果您在模型中使用的是
attr\u accessible
,请确保您还添加了

attr_accessible :terms
在你看来,

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

...
...

除非您计划拒绝未接受服务条款的用户访问,否则用户表中不需要额外的列。由于用户无法完成注册,服务条款将不存在。

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

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

表格

= f.check_box :terms_of_service
型号/用户.rb

validates :terms_of_service, acceptance: true
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
最重要的是,Desive将清理您的参数,并且服务条款将从提交的参数中删除。因此:

注册\u controller.rb

validates :terms_of_service, acceptance: true
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
类注册控制器
一些代码片段将有助于破解解决方案!如果您只需要在用户注册时进行验证,您可以将add on::create添加到验证器中。值得注意的是,律师可能会要求保留用户已接受t+c的记录。。。我认为最好的做法是将布尔值保存到数据库中。