小编seo*_*lee的帖子

跳过创建 Rails 时的回调

我想为 Rspec 测试创建一个 Active Record 模型。

但是,这个模型有回调,即: before_create 和 after_create 方法(如果我没记错的话,我认为这些方法称为回调而不是验证)。

有没有办法在不触发回调的情况下创建对象?

我之前尝试过的一些解决方案/不适用于我的情况:

更新方法:

update_column 和其他更新方法将不起作用,因为我想创建一个对象,并且当该对象不存在时我无法使用更新方法。

工厂女孩和构建后:

FactoryGirl.define do
  factory :withdrawal_request, class: 'WithdrawalRequest' do
    ...
    after(:build) { WithdrawalRequest.class.skip_callback(:before_create) }
  end
end
Run Code Online (Sandbox Code Playgroud)

失败/错误:after(:build) { WithdrawalRequest.class.skip_callback(:before_create) }

NoMethodError:类的未定义方法“skip_callback”:类

跳过 Factory Girl 和 Rspec 上的回调

跳过回调

WithdrawalRequest.skip_callback(:before_create)

withdrawal_request = WithdrawalRequest.create(withdrawal_params)

WithdrawalRequest.set_callback(:before_create)
Run Code Online (Sandbox Code Playgroud)

失败/错误:WithdrawalRequest.skip_callback(:before_create)

NoMethodError:未定义方法“_before_create_callbacks”#

如何在 Rails 中保存模型而不运行回调

我也尝试过

WithdrawalRequest.skip_callbacks = true
Run Code Online (Sandbox Code Playgroud)

这也不起作用。

- - - - - 编辑 - - - - - -

我的工厂函数被编辑为:

after(:build) { WithdrawalRequest.skip_callback(:create, :before, :before_create) }
Run Code Online (Sandbox Code Playgroud)

我的 before_create 函数如下所示: …

ruby-on-rails callback before-filter

5
推荐指数
1
解决办法
4718
查看次数

标签 统计

before-filter ×1

callback ×1

ruby-on-rails ×1