Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails HTTParty超越ruby on rails中的本机删除_Ruby On Rails_Ruby_Activerecord_Httparty - Fatal编程技术网

Ruby on rails HTTParty超越ruby on rails中的本机删除

Ruby on rails HTTParty超越ruby on rails中的本机删除,ruby-on-rails,ruby,activerecord,httparty,Ruby On Rails,Ruby,Activerecord,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 Model.where("proper

我正试图通过控制器
从数据库中删除一条记录,如下所示:

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
Model.where("property_1  = ? OR property_2 = ?", value_1, value_2).first.delete
这就过去了

但是,当我将代码更改为使用
delete
代替
destroy
时,如下所示:

it "should do stuff" do
  expect{ post :create, @model_instance }.to change{ Model.count }.by -1
end
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
,该类的delete方法优于本机方法:

def delete
  self.class.delete(id) if persisted?
  @destroyed = true
  freeze
end
所以,我的问题是:使用
HTTParty
是否意味着我将无法再次使用本机
delete
方法?知道
delete
会像
destroy
那样删除记录而不触发任何回调。(我不想使用
destroy
然后手动
skip_callbacks
delete
可以为我这样做时)


提前感谢您的回复

在包含HTTParty之前,您需要为delete方法添加别名。比如:

alias_method :model_delete, :delete
include HTTParty
然后:


“应该做些什么”测试正确吗?它不应该启动
expect{delete:delete,@model_instance}
@ReggieB感谢您的观察,是的,它是正确的。我正在为另一个资源的
create
方法在
before_action
中执行删除操作。