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)