0
我通过控制器试图delete
从数据库中的记录如下:HTTParty压倒一切的天然红宝石删除轨道
Model.where("property_1 = ? OR property_2 = ?", value_1, value_2).first.destroy
而且我有一个Rspec的测试为它如下:
it "should do stuff" do
expect{ post :create, @model_instance }.to change{ Model.count }.by -1
end
而且通过。
但是,当我改变我的代码来代替destroy
使用delete
如下:
Model.where("property_1 = ? OR property_2 = ?", value_1, value_2).first.delete
测试失败,出现以下错误:
ArgumentError: bad argument (expected URI object or URI string)
在仔细检查,原来我在我的模型类(include HTTParty
)中包含了HTTParty
,它有一个删除方法,即覆盖原生的:
def delete
self.class.delete(id) if persisted?
@destroyed = true
freeze
end
所以,我的问题是:是否使用HTTParty
意味着我将不能再使用原生delete
方法?知道delete
将删除记录而不会触发任何回调,因为destroy
会。 (我不会想用destroy
,然后手动skip_callbacks
时delete
能为我做到这一点)提前
感谢响应
是, “应该做的东西” 测试是否正确?它不应该开始'expect {delete:delete,@model_instance}' – ReggieB
@ReggieB感谢您的观察,并且是的它是正确的。我正在执行'before_action'中的另一个资源的'create'方法的删除。 –