加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails范围测试为零

发布时间:2020-12-17 04:26:52 所属栏目:百科 来源:网络整理
导读:我有一张费用表.它有一列invoice_id. 我想要2个范围 – 一个用于计费费用,一个用于未计费. 我以为我可以测试一下invoice_id是否为零. scope :notbilled,where(:invoice_id == nil)scope :billed,where(:invoice_id != nil) 但是,这不起作用. 有任何想法吗?
我有一张费用表.它有一列invoice_id.

我想要2个范围 – 一个用于计费费用,一个用于未计费.
我以为我可以测试一下invoice_id是否为零.

scope :notbilled,where(:invoice_id == nil)
scope :billed,where(:invoice_id != nil)

但是,这不起作用.

有任何想法吗?

谢谢!

解决方法

对于第一个,您需要使用哈希语法:
scope :notbilled,where(:invoice_id => nil)

第二个要求你使用原始sql:

scope :billed,where('invoice_id is not null')

您也可以跳转到第二个arel以避免编写原始sql,但这是一个高级主题,并且最终会比原始sql更不易读.

使用直接相等是行不通的,因为这些表达式是立即求值的,并且由于不涉及变量而被转换为它们的布尔等价物,因此它们将被解释为

scope :notbilled,where(false)
scope :billed,where(true)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读