加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails:使用以下命令对has_many进行排序:由于

发布时间:2020-12-17 02:33:18 所属栏目:百科 来源:网络整理
导读:我有一个铁轨模型 用户与Post有很多关系. Post包含一个名为position的属性,用于存储位置(acts_as_list gem).该位置将位置存储在用户帖子列表上(该顺序不是由于帖子的创建/修改). 此外,Post存储了时间戳(t.timestamps在迁移中) 所以我在User.rb中定义了以下内
我有一个铁轨模型
用户与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中创建了一个默认范围,它创建了不需要的顺序.

问题解决了

解决方法

您可以使用 default scope:

class Post < ActiveRecord::Base
  scope :by_position,order("position ASC")
  default_scope by_position
  #...
end

然后@ user.posts应返回按位置(ASC)排序的列表.

此外,以下应该适合您:(复数邮寄)

has_many :posts,:dependent => :destroy,:order => "posts.position ASC"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读