0

在我的 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方法不关心我刚刚添加的错误消息。有没有更好更优雅的方法来做到这一点?

4

1 回答 1

2

Rails 提供了一个验收验证器。它非常适合您的情况。有关更多信息,请参阅文档

于 2012-04-23T18:51:14.423 回答