Rspec 销毁抛出之前的轨道5(:中止)

Rspec 销毁抛出之前的轨道5(:中止),rspec,callback,ruby-on-rails-5,has-and-belongs-to-many,Rspec,Callback,Ruby On Rails 5,Has And Belongs To Many,我在一个旧版Rails应用程序中工作,该应用程序已经在Rails的每个主要版本中进行了勤奋的升级,我们目前使用的是Rails 5.1,我无法在销毁之前获得,以防止在验证失败时删除 我一直在读到return false已被弃用,我们都应该使用throw:abort,但两者都不起作用。我没有收到任何错误,尽管有抛出 user.rb: class User < ApplicationRecord has_many :permission_users has_many :permissio

我在一个旧版Rails应用程序中工作,该应用程序已经在Rails的每个主要版本中进行了勤奋的升级,我们目前使用的是Rails 5.1,我无法在销毁之前获得
,以防止在验证失败时删除

我一直在读到
return false
已被弃用,我们都应该使用
throw:abort
,但两者都不起作用。我没有收到任何错误,尽管有
抛出

user.rb:

class User < ApplicationRecord
  has_many :permission_users
  has_many :permissions, through: :permission_users, dependent: :destroy
end
有:

before\u destroy回调应该放在dependent::destroy之前 关联(或使用prepend:true选项),以确保它们执行 在dependent::destroy删除记录之前

所以请试试看

before_destroy :check_before_removing!, prepend: true

试着做这样的事情

销毁前检查:删除前检查,预结束:真

拆卸前检查def 如果为true&&some\u条件 抛出(:中止) 结束
结束

有点脱离主题,但是:
expect{}.to change{}.by(0)
->
expect{}.not_to change{}
我实际上删减了规范以关注问题。实际上,我正在测试两个不同的值不会改变,显然rspec不喜欢
。to_not change{…}。和change{…}
,但是谢谢你,除非我做错了什么,否则这仍然不起作用。同样的失败,仍然进入
抛出(:abort)
,并且
抛出后的日志记录没有打印出来,所以我知道它正在抛出或其他什么
specify "cannot have their admin permissions revoked" do
  expect {
    admin.permissions.delete admin_permission
  }.to change { admin.permissions.count }.by(0)       
end

# => expected `admin.permissions.count` to have changed by 0, but was changed by -1
before_destroy :check_before_removing!, prepend: true