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