搜索多个条件(Ruby on Rails)

时间:2014-04-25 16:28:33

标签: ruby-on-rails

我想在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 

2 个答案:

答案 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 ]})