>scope :a, -> { joins(:b).where('bs.c': false) }
>scope :a, -> { joins(:b).where('bs.c = ?', false) }
只是想问这两行是否做同样的事情?第一个似乎在开发中工作正常但在我尝试推送到Heroku时给了我一个语法错误。第一个被弃用了吗?
答案 0 :(得分:1)
我相信这些更易于互换,没有语法错误:
scope :a, -> { joins(:b).where(bs: { c: false }) }
scope :a, -> { joins(:b).where('bs.c' => false }) }
scope :a, -> { joins(:b).where('bs.c = ?', false) }
scope :a, -> { joins(:b).where('bs.c = :q', { q: false }) }
就个人而言,第一行是我的首选,因为您可以在该嵌套哈希中列出多个列,而无需继续重复表名/别名。
答案 1 :(得分:0)
只有Ruby 2.2及更高版本允许使用带引号键的JSON哈希语法,即
{'foo' : bar}
而不是
{foo: bar}
当然,在您的情况下,由于密钥中的.
,未引用该密钥可能无法正常工作。
这表明你在本地和heroku上运行不同的Ruby版本。
除此之外,它们应该是等价的。