gpt4 book ai didi

ruby-on-rails - rails : sort a has_many using :order is not working due to order by timestamp

转载 作者:行者123 更新时间:2023-12-03 12:19:29 25 4
gpt4 key购买 nike

我有一个 rails 模型可以说
具有 a 的用户与 Post 有很多关系。 Post 包含一个名为 position 的属性,用于存储位置 (acts_as_list gem)。该位置存储在用户帖子列表中的位置(该顺序不是由于帖子的创建/修改造成的)。
此外,帖子还存储了时间戳(迁移中的 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)排序的列表。

此外,以下内容应该对您有用:(在 post 上为复数)
has_many :posts, :dependent => :destroy, :order => "posts.position ASC"

关于ruby-on-rails - rails : sort a has_many using :order is not working due to order by timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com