2017-03-01 46 views
0

我有一个我正在使用Ruby访问的表(设备)。我想删除它是否满足这两个条件的一行:如何从Ruby Sequel表中删除基于两个条件的行

{:user_id => params[:user_id]} 

{:reg_token => params[:reg_token]} 

但是,我不知道如果我知道如何正确使用AND。我试图按照本指南:

http://sequel.jeremyevans.net/rdoc/files/doc/dataset_filtering_rdoc.html

if Device.where{Sequel.&({:user_id => params[:user_id]}, {:reg_token => params[:reg_token]})}.count > 0 
    # device = Device.where((:user_id => params[:user_id]) & (:reg_token => params[:reg_token])).delete 
    device = Device.where{Sequel.&({:user_id => params[:user_id]}, {:reg_token => params[:reg_token]})}.delete 
end 
+0

阅读有你续集演出的SQL就会散发出的文档。通常你可以在查询结尾加'.sql',但也有其他的方法。然后将该输出与DBM文档所说的“AND”查询应该看起来相似。 –

+0

谢谢,我不知道你能做到这一点。 – mjpablo23

回答

0

我只想链where条款:

devices = Device.where(user_id: params[:user_id]).where(reg_token: params[:reg_token]) 
devices.delete_all 
+0

谢谢,那工作。我不得不使用devices.delete而不是delete_all – mjpablo23

+0

甚至没有必要链接它们。你可以使用单一的哈希语法:'devices = Device.where(user_id:params [:user_id],reg_token:params [:reg_token])' –