2016-04-29 5 views
0

私はleaveテーブルを持っています。これにはstatusの列があります。文字列である。これらのレコードをテーブルから取得する場合、statusカラムはnullと等しく、ステータスはprivilageまたはcasualまたはsickではありません。どのようにレール4でこのクエリを書くには?statusがnilに等しく、privilageまたはカジュアルに等しくないレコードを取得する方法

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

あなたは奇妙な状態に陥っています。 status eq nil、またカジュアルではないステータス| priveledge | sickなので、ステータスがnilの常時レコードを取得するだけです。 –

+0

'status'は' null'で、どちらの値もありますか? – vee

答えて

0

これを試してみてください:

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

待ち時間! 'nil'ステータスのレコードを取得した場合、自動的に'カジュアル 'や' privilage'や 'sick'といったレコードは自動的にはありません。 'nil'と他のステータス値の間に' OR'条件が必要なのでしょうか? – Psylone

+0

2.2.2:072> PunchInOut.where(ステータス:nil).where.not(ステータス:%w [カジュアル・プライベート・プライス]) PunchInOut Load(1.1ms)SELECT 'punch_in_outs'。* FROM' punch_in_outs' WHERE 'punch_in_outs '.'status'はNULLで(' 'punch_in_outs''''''''''''は' 'カジュアル ''、 'privilage' 'sick' 'ではありません) =># 2.2.2:073 > – John

+0

この基準を満たすレコードが多数存在する。しかし、私はemty配列を取得しています。 – John

0

あなたが(;-)脳読解力 をしようとして)このようなものが必要と思われる:

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

または

​​ かもしれ
関連する問題