2016-04-29 11 views
0

我有一个leave表。在这个我有一个status列。这是一个字符串列。我想要从leave表中获取那些记录,其中status列等于null,状态不等于privilagecasualsick。如何在rails 4中编写这个查询?如何获取状态等于零且不等于特权或临时的记录

leave.where(:status => nil).where.not(:status => "casual" or "privilage" or "sick"). 
+2

你有一个奇怪的情况,因为你搜索status status eq nil,并且状态不是随意的,所以你只需要得到always记录,状态是nil –

+0

'status'是'null'并且具有这些值中的任何一个? – vee

回答

0

试试这个:

leave.where(status: nil).where.not(status: %w[casual privilage sick]) 
+0

等一下!如果您获得了“无”状态的记录,则它们自动不会是“随便”或“特许”或“病态”。可能你需要在'nil'和其他状态值之间的'OR'条件吗? – Psylone

+0

2.2.2:072> PunchInOut.where(status:nil).where.not(status:%w [casual privilage sick]) PunchInOut Load(1.1ms)SELECT'punch_in_outs'。* FROM'punch_in_outs' WHERE'punch_in_outs '.status'是NULL和('punch_in_outs'.'status'不在('casual','privilage','sick')) =># 2.2.2:073 > – John

+0

如此多的记录符合这个标准。但我得到emty阵列。 – John

0

看来你需要这样的事情(试图大脑阅读能力 ;-)):

leave.where.not(status: ['casual', 'privilage', 'sick', nil ]) 

或可能

​​
相关问题