接受使用条款rails

时间:2011-06-12 19:13:11

标签: ruby-on-rails-3 validation

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

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

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

2 个答案:

答案 0 :(得分:22)

在你的模特中,

validates_acceptance_of :terms

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

attr_accessible :terms

在您看来,

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

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

答案 1 :(得分:17)

这是一个有效的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