2011-07-01 8 views
0

私はオブジェクトJobBreakdownです。has_one :invoiceです。 JobBreakdownに請求書がある場合(invoice_idがnilでない場合)、INVOICEDとみなされます。そうでない場合は、UNINVOICEDとしてください。 InvoicedまたはUninvoicedのドロップダウンボックスから選択し、正しいレコードが表示されるようにするには、Ruby on Railsで名前付きスコープ/ lambdaを使用したNullプロパティの選択

正しいレコードをテストして返すために名前付きスコープを書くにはどうすればよいですか?

named_scope :is_invoiced, lambda {|is_invoiced| {:conditions => :invoice.nil? == is_invoiced}} 

NBの線に沿って何か:私は、ルビー1.8.7を使用しています、私はわからないんだけど2.3.5

答えて

0

レール、これはレール2.xのための正しい構文ですが、少なくともそれをそれをどうやって行うのか考えてみましょう。このような

named_scope :is_invoiced, lambda { |is_invoiced| :condition => is_invoiced ? "invoice IS NOT NULL" : "invoice IS NULL" } 

または多分何か:

named_scope :is_invoiced, lambda { |is_invoiced| :condition => "invoice IS #{is_invoiced ? 'NOT' : ''} NULL" } 
+0

は、私はあなたの質問を誤解だと思います。ユーザーは、null請求書を使用してジョブの内訳を検索するか、NON null請求書を使用してジョブを検索するかを決定します。両方のオプションが必要です。その範囲は私にヌルのものだけを返します。 – link664

+0

申し訳ありません。私はあなたの質問を誤解しました。私は私の答えを更新しました。 – bassneck

関連する問題