2016-04-29 76 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 ]) 

或可能

​​
相關問題