在Rails表单中验证非模型字段

时间:2012-04-23 18:45:10

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

在我的Rails 3.2应用程序中,我有一个包含“条款和条件”复选框的注册表单。表单看起来像这样:

<%= form_for @user do |f| %>
  <!-- Error message stuff -->
  <%= f.text_field :email %>
  <!-- More fields... -->
  <%= text_field_tag :terms_and_conditions, false, "true" %>
<% end %>

为了确保用户选中该复选框,我的控制器中有以下代码:

unless params[:terms_and_conditions] == "true"
  @user.errors[:base] << "You must check the 'Terms and Conditions' checkbox"
end

但是当我拨打@user.save(或@user.valid?)时,它似乎清除了此错误消息。我知道我可以使用@user.errors.empty? && @user.save,但我发现奇怪的是save方法并不关心我刚刚添加的错误消息。是否有更好,更优雅的方式来做到这一点?

1 个答案:

答案 0 :(得分:2)

Rails提供验收验证器。它非常适合您的情况。有关详细信息,请参阅docs