2013-07-18 46 views
3

在導軌3如果我寫:Model.from('models') AREL生成以下SQL:Rails 4 AR` from`不同於導軌3?

select "models".* from models 

在導軌4相同的AREL生成以下SQL:

select "models".* from 'models', NULL 

表名稱被包裹在引號和' ,NULL'被追加。我如何使用arel來獲得與rails 3相同的結果?

我正在利用原來的行爲,所以我可以運行一個相對複雜的with recursive針對postgres的查詢。在rails4中,當postgres達到我給from的單引號前面的值時,postgres會窒息。

有沒有更好的方法來做with recursive查詢?或者,有沒有辦法用arel查詢,所以它可以像以前一樣工作?

+1

我不能重複你所看到的錯誤。在供應商表中使用應用程序時,我通過'Vendor.from('vendors')。to_sql'在3.2和4上看到相同的SQL語句,這導致了'#=>「SELECT \」vendors \「。* FROM vendors」 '。你能分享更多複雜的查詢嗎? –

+0

嗯,我甚至沒有在這一點上使用複雜的查詢,只是一個簡單的查詢,就像你試過的那個。不過,我得到了一個不同的'to_sql'。也許版本差異? Rails 4.0.0,第0.15.1頁。任何其他相關的寶石? –

+0

@DanReedy啊!感謝您的理智檢查。這是由squeel寶石造成的。必須是不兼容的,因爲我從我的項目中刪除它時會得到預期的行爲。我會跟他們一起去。 –

回答

1

這似乎與squeel gem(今天的主分支)不兼容。

編輯我發送了pull request給squeel的主分支。爲我解決了這個問題。

編輯2:合併到主

+0

恥辱:(我最喜歡的寶石之一! –

+0

@Damien如果你遇到這個我相信我把它固定在我的哨叉上 –

+0

非常感謝,我會看看我是否有問題 –