首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >validates_acceptance_of仍会保存记录

validates_acceptance_of仍会保存记录
EN

Stack Overflow用户
提问于 2011-08-09 12:21:35
回答 1查看 534关注 0票数 1

我使用的是ruby 1.9.2-p180,rails 3.0.7。我使用了validates_acceptance_of,因为用户必须同意我们的条款和条件。我们没有对应的列,但我知道“如果数据库列不存在,terms_of_service属性就完全是虚拟的”。来自http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M000082

无论如何,我通过手动冒烟测试应用程序来再次检查这一点,我从日志中看到记录仍然插入到数据库中,这很奇怪,因为在提交表单时,我被重定向回表单并显示错误:“必须同意条款和条件”(这让我认为它以前是有效的)。

我是不是做错了什么?

_form.haml:

代码语言:javascript
运行
复制
%label.checkbox-label{:for => "operator_terms_and_conditions"}
  = f.check_box :terms_and_conditions
  I agree to 
  = link_to "Terms and Conditions", operator_terms_path, :target => "_blank"

operators_controller:

代码语言:javascript
运行
复制
def create
  user_params = params[:operator][:user]
  user_params.merge!(:login => user_params[:email])
  @password = params[:operator][:user][:password]

  Operator.transaction do # don't save User if operator is invalid
    @operator = Operator.create(params[:operator])
  end

  respond_to do |format|
    unless @operator.new_record?
      UserMailer.operator_confirmation_email(@operator, @password).deliver
      UserMailer.operator_registration_admin_notification_email(@operator).deliver

      UserSession.create(@operator.user)
      format.html {redirect_to new_operator_aircraft_path}
    else
      format.html { render :action => "new" }
    end
  end

end

在模型中:

代码语言:javascript
运行
复制
validates_acceptance_of :terms_and_conditions
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-09 16:52:17

找到答案了。问题不在于validates_acceptance_of,而在于我保存数据的方式。当创建操作员时,还创建了绑定到该操作员的用户,并且该用户正被插入到数据库中。

这是因为尽管操作符正在回滚(因为它无效),但仍然创建了用户(因为它不在事务中)。

我使用nested_transactions解决了这个问题:

操作员模型:

代码语言:javascript
运行
复制
...
User.transaction(:requires_new => true) do
  create_user
  raise ActiveRecord::Rollback unless self.valid?
end
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6991314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档