我想在Rails中搜索具有多个条件的表。
我正在努力从数据库中删除某些包(记录),但首先我需要获取userId和packageID。
这是我写的代码,但它给出了错误。
@package=Packages.find(:all, :condition => {:id => params[:pid]}, :condition => {:senders_id => cookies[ :user_id ]})
这是错误:
ArgumentError in CreatePackagesController#deletepackage
Unknown key: condition
如果有人可以提供帮助,我只需要具有正确语法的等效代码。
def deletepackage
@package=Packages.find(:all, :conditions => {:id => params[:pid], :senders_id => cookies[ :user_id ]}
if (@package!=nil && req.receivedByCarrier==false)
@package.destroy
elsif (@package!=nil && req.receivedByCarrier==true)
@package.destroy
end
return;
end
答案 0 :(得分:1)
更改您的查询,如下所示:
@package = Packages.find(:all, :conditions => {:id => params[:pid], :senders_id => cookies[:user_id]})
您收到的错误为Unknown key: condition
,因为:condition
方法中find
不是有效选项。
:condition
应为:conditions
(注意复数)。此外,您应该将这两个条件作为单个键值对传递。
对于Rails 4.x
您可以按照以下方式执行此操作
@package = Packages.where(id: params[:pid], senders_id: cookies[:user_id])
答案 1 :(得分:0)
此
@package=Packages.find(:all, :condition => {:id => params[:pid]}, :condition => {:senders_id => cookies[ :user_id ]})
应该是这样的
@package=Packages.find(:all, :conditions => {:id => params[:pid]}, :senders_id => cookies[ :user_id ]})