我有一个铁轨模型让我们说
用户与Post有很多关系。 Post包含一个名为position的属性,用于存储位置(acts_as_list gem)。该位置将位置存储在用户帖子列表上(该顺序不是由于帖子的创建/修改)。
此外,Post还存储了时间戳(迁移中t.timestamps
)
所以我在User.rb中定义了以下内容:
has_many :post, :order => "position", :dependent => :destroy
然而,当我做User.first.posts
帖子不按位置排序。
我已经解决了,sql是查询包含以下内容:
ORDER BY post.created_at DESC, position
所以created_at仍在使用中。
如何按位置排序而不使用created_at属性?
提前致谢!
解 我在Post中创建了一个默认范围,因为它创建了不需要的顺序。
问题解决了
答案 0 :(得分:4)
您可以使用default scope:
class Post < ActiveRecord::Base
scope :by_position, order("position ASC")
default_scope by_position
#...
end
然后@user.posts
应返回按位置(ASC)排序的列表。
此外,以下内容适合您:( post
上的复数)
has_many :posts, :dependent => :destroy, :order => "posts.position ASC"