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

谢谢,这很有道理。我总是可以单独选择每种格式,然后按照我需要的顺序将它们加入到单个数组中。似乎让数据库完成它所要做的事情会更有效率。 –

相关问题