gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中自动对 has_many 关系进行排序?

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

这似乎是一个非常简单的问题,但我还没有在任何地方看到它的答案。

在 Rails 中,如果你有:

class Article < ActiveRecord::Base 
has_many :comments
end
class Comments < ActiveRecord::Base
belongs_to :article
end

为什么你不能用这样的方式对评论进行排序:

@article.comments(:order=>"created_at DESC")

如果您需要经常引用命名范围,甚至人们会做这样的事情:

@article.comments.sort { |x,y| x.created_at <=> y.created_at }

但有些事情告诉我它应该更简单。我错过了什么?

最佳答案

您可以使用 has_many 本身的选项指定裸集合的排序顺序:

class Article < ActiveRecord::Base 
has_many :comments, :order => 'created_at DESC'
end
class Comment < ActiveRecord::Base
belongs_to :article
end

或者,如果您想要一种简单的非数据库排序方法,请使用 sort_by :

article.comments.sort_by &:created_at

使用 ActiveRecord 添加的排序方法收集此内容:

article.comments.find(:all, :order => 'created_at DESC')
article.comments.all(:order => 'created_at DESC')

您的情况可能会有所不同:上述解决方案的性能特征将发生巨大变化,具体取决于您最初获取数据的方式以及您使用哪种 Ruby 来运行应用。

关于ruby-on-rails - 如何在 Rails 中自动对 has_many 关系进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738971/

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