Rspec 销毁抛出之前的轨道5(:中止)
我在一个旧版Rails应用程序中工作,该应用程序已经在Rails的每个主要版本中进行了勤奋的升级,我们目前使用的是Rails 5.1,我无法在销毁之前获得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
,以防止在验证失败时删除
我一直在读到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