在rails应用程序中添加检查以接受使用条款的最佳方法是什么?
我似乎无法使validates_acceptance_of
正常工作。我在我的用户模型中添加了一个bool(这是必要的吗?)。然后有一个返回true / false的复选框。
我觉得我只是犯了一个愚蠢的小错误。有什么想法吗?
答案 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