Выбор нулевого свойства с использованием именованных областей / лямбда в Ruby on Rails - PullRequest
0 голосов
/ 01 июля 2011

У меня есть объект JobBreakdown, который has_one :invoice. Если JobBreakdown имеет счет-фактуру (т.е. invoice_id не равен nil), то он считается INVOICED . Если нет, то это считается UNINVOICED . Пользователи хотят иметь возможность выбирать из выпадающего списка Invoiced или Uninvoiced и иметь правильные записи.

Как мне написать именованную область для проверки и возврата правильных записей? Что-то вроде

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

Примечание: я использую ruby ​​1.8.7, рельсы 2.3.5

1 Ответ

0 голосов
/ 01 июля 2011

Я не уверен, что это правильный синтаксис для rails 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" }
...