2016-02-28 57 views
0
>scope :a, -> { joins(:b).where('bs.c': false) } 

>scope :a, -> { joins(:b).where('bs.c = ?', false) } 

只是想問這兩條線是否做同樣的事情?第一個似乎在開發過程中工作正常,但是當我嘗試推送到Heroku時給了我一個語法錯誤。第一個是否被棄用?這些Rails查詢語法是否可以互換?

回答

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 }) } 

就個人而言,第一行是我的首選,因爲你可以列出嵌套哈希中的幾個列,而無需不斷重複表名/別名。

+0

感謝您的編輯,@spickermann。當我嘗試教別人時,我可以學到更多東西,甚至更好。 –

0

只有紅寶石2.2及以上允許使用JSON喜歡用引號鍵哈希語法,即

{'foo' : bar} 

而不是

{foo: bar} 
你的情況

當然沒有可能引述鍵不會工作要麼是因爲密鑰中的.

這表明您在本地和heroku上運行不同的Ruby版本。

除此之外,它們應該是等效的。

相關問題