有关ActiveRecord#default_scope方法和默认排序的问题

有关使用Rails 2/3的default_scope的问题。 在我的Rails 3项目中,我使用了很多default_scope来按created_at desc进行排序。 所以首先我写道:

 default_scope order(“created_at desc”)

在我的很多模特中。 但问题是created_at几乎存在于我的每个应用程序表中……所以如果我编写一个简单地在两个表上进行连接的查询,我会得到一个SQL错误模糊列created_at …所以我不得不重写所有default_scopes包括table_name,如:

 default_scope order(“posts.created_at desc”)

有没有更好的方法来处理这个问题,还是唯一的解决方案?

谢谢。

在Rails中使用SQL字符串时,应始终指定表名,以避免这些歧义。 请注意,您可以这样做:

default_scope order("#{table_name}.created_at desc")