0
>scope :a, -> { joins(:b).where('bs.c': false) }
>scope :a, -> { joins(:b).where('bs.c = ?', false) }
只是想問這兩條線是否做同樣的事情?第一個似乎在開發過程中工作正常,但是當我嘗試推送到Heroku時給了我一個語法錯誤。第一個是否被棄用?這些Rails查詢語法是否可以互換?
>scope :a, -> { joins(:b).where('bs.c': false) }
>scope :a, -> { joins(:b).where('bs.c = ?', false) }
只是想問這兩條線是否做同樣的事情?第一個似乎在開發過程中工作正常,但是當我嘗試推送到Heroku時給了我一個語法錯誤。第一個是否被棄用?這些Rails查詢語法是否可以互換?
我相信這是更互換,無語法錯誤:
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 }) }
就個人而言,第一行是我的首選,因爲你可以列出嵌套哈希中的幾個列,而無需不斷重複表名/別名。
只有紅寶石2.2及以上允許使用JSON喜歡用引號鍵哈希語法,即
{'foo' : bar}
而不是
{foo: bar}
你的情況
當然沒有可能引述鍵不會工作要麼是因爲密鑰中的.
。
這表明您在本地和heroku上運行不同的Ruby版本。
除此之外,它們應該是等效的。
感謝您的編輯,@spickermann。當我嘗試教別人時,我可以學到更多東西,甚至更好。 –