【问题标题】:Null property selection using named scopes/lambda in Ruby on Rails在 Ruby on Rails 中使用命名范围/lambda 进行空属性选择
【发布时间】:2011-07-01 05:32:40
【问题描述】:

我有一个对象JobBreakdown,即has_one :invoice。如果 JobBreakdown 有发票(即 invoice_id 不为零),则将其视为 INVOICED。如果没有,则考虑 UNINVOICED。用户希望能够从下拉框中选择已开票或未开票并显示正确的记录。

如何编写命名范围来测试并返回正确的记录?类似于

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

注意:我使用的是 ruby​​ 1.8.7,rails 2.3.5

【问题讨论】:

    标签: ruby-on-rails ruby named-scope


    【解决方案1】:

    我不确定,这是否是 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" }
    

    【讨论】:

    • 我认为你误解了这个问题。用户将确定他们是要搜索带有空发票的工作细分,还是带有非空发票的工作细分。需要成为两者的选择。该范围只会返回空值。
    • 对不起。我确实误解了你的问题。我已经更新了我的答案。
    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2018-08-03
    相关资源
    最近更新 更多