2011-07-01 25 views
0

我有一个对象JobBreakdownhas_one :invoice。如果JobBreakdown有一张发票(即invoice_id不是零),那么它被认为是INVOICED。如果不是,则认为是UNINVOICED。用户希望能够从已开票或未开票的下拉框中进行选择,并显示正确的记录。在Ruby on Rails中使用命名作用域/ lambda的空属性选择

我该如何编写一个命名范围来测试并返回正确的记录?沿着

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

NB线的东西:我使用Ruby 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

我想你误解了问题。用户将确定他们是否要使用空发票搜索工作明细,或使用非空发票进行工作明细。需要成为两者的选择。该范围将只返回空的。 – link664

+0

对不起。我误解了你的问题。我已经更新了我的答案。 – bassneck

相关问题