5

call_status = open で unit_id が nil でないすべての呼び出しを選択する必要があるスコープを作成しています。私はRubyが本当に苦手で、Railsも初めてなので、これを正しく表現するのに苦労しています。

ここに私が持っているもの:

scope :open_calls, where(:call_status => "open", :unit_id != nil).order("id ASC")

nil を評価するために別の演算子を使用する必要がありますか?

4

2 に答える 2

8

私の知る限り、ハッシュを使用して NULL 句を作成するように ActiveRecord に指示する方法はありません。ただし、文字列スタイルとハッシュ スタイルの where 句を連結できます。

scope :open_calls, where(:call_status => "open").where("unit_id IS NOT NULL").order("id ASC")
于 2012-07-04T00:31:48.997 に答える
0

あなたはこれを行うことができます:

scope :open_calls, where("call_status IS ? AND unit_id IS NOT ?", "open", nil).order("id ASC")

"open"nilが配列に配置され、?それらを挿入するために使用することに注意してください。これは、引用/エスケープなどによる SQL インジェクションのバグを防ぐのに役立ち、強く推奨されます。詳しくはこちらをご覧ください。

于 2012-07-04T00:41:43.657 に答える