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