2011-06-12 78 views
11

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

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

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

+1

一些片段,将有助于对破译的解决方案! – eLobato 2011-06-12 19:34:41

回答

22

在模型中,

validates_acceptance_of :terms 

如果您使用在你的模型attr_accessible然后确保你还可以添加,

attr_accessible :terms 

在您看来,

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

有在用户表中不需要额外的列,除非您计划拒绝访问没有交流的用户提出了服务条款,因为他们不能完成注册。

15

这是一个工作轨道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 
+1

如果您只需要在用户注册时进行验证,则可以将::create添加到验证程序。 – krx 2016-05-10 16:00:12