0

開始日と終了日を持つモデルがあります。終了日が空または nil の場合、モデルはアクティブな状態です。

すべてのアクティブなインスタンスのスコープを追加しようとしています。

ブランクは使えますか?where句でどういうわけか?where句で両方をチェックする唯一の方法はありますか? これを行う別の方法はありますか?

これが私が今持っているものです:

scope :active, where( 'stop_date is ? or stop_date is ""', nil )

これを行うためのよりクリーンな方法があることを願っています。

4

1 に答える 1

1

Rails 3.1.0scope が非推奨になった後は、クラス メソッドのみを使用することを検討します。あなたの状況で列が実際にNULL空のカウントになる可能性がある場合は、両方のインスタンスを確認する必要があります。NULL

def self.active
  where("stop_date IS NULL OR stop_date <> ''")
end

IMO の方が少し優れていますが、状態を確認する必要がない場合NULL(例 where のようにnull => false)。それからちょうど:

def self.active
  where("stop_date <> ''")
end

動作します。

于 2013-01-11T05:05:45.727 に答える