0

我在我的模型有沒有更多的數據庫不可知的方式來編寫這個默認的作用域在Rails 3中?

default_scope order("IF(format = #{FORMATS[:wide]}, 1, 0) DESC, created_at DESC, name ASC") 

在那裏我運行MySQL它的工作我的開發機器上精細的一項定義以下默認範圍,但在部署到生產在這裏我們使用的Postgres borked。有沒有辦法使用Arel而不是直接寫SQL? FORMATS[:wide]返回一個整數,但它可能沒有任何特定的順序。我只想要首先返回具有該特定format的記錄。

回答

0

我不會把它放在SQL中。我可能會爲每種格式類型創建一個範圍,然後使用Ruby來確定要使用哪種格式。或者創建一個方法來確定排序順序,並將其傳遞到您使用它的任何位置。

+0

謝謝,這很有道理。我總是可以單獨選擇每種格式,然後按照我需要的順序將它們加入到單個數組中。似乎讓數據庫完成它所要做的事情會更有效率。 –

相關問題