我有一個leave
表。在這個我有一個status
列。這是一個字符串列。我想要從leave
表中獲取那些記錄,其中status
列等於null
,狀態不等於privilage
或casual
或sick
。如何在rails 4中編寫這個查詢?如何獲取狀態等於零且不等於特權或臨時的記錄
leave.where(:status => nil).where.not(:status => "casual" or "privilage" or "sick").
我有一個leave
表。在這個我有一個status
列。這是一個字符串列。我想要從leave
表中獲取那些記錄,其中status
列等於null
,狀態不等於privilage
或casual
或sick
。如何在rails 4中編寫這個查詢?如何獲取狀態等於零且不等於特權或臨時的記錄
leave.where(:status => nil).where.not(:status => "casual" or "privilage" or "sick").
試試這個:
leave.where(status: nil).where.not(status: %w[casual privilage sick])
等一下!如果您獲得了「無」狀態的記錄,則它們自動不會是「隨便」或「特許」或「病態」。可能你需要在'nil'和其他狀態值之間的'OR'條件嗎? – Psylone
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')) =>#
如此多的記錄符合這個標準。但我得到emty陣列。 – John
看來你需要這樣的事情(試圖大腦閱讀能力 ;-)):
leave.where.not(status: ['casual', 'privilage', 'sick', nil ])
或可能
你有一個奇怪的情況,因爲你搜索status status eq nil,並且狀態不是隨意的,所以你只需要得到always記錄,狀態是nil –
'status'是'null'並且具有這些值中的任何一個? – vee