我有一个has_many
个主题的群组模型。主题模型has_many
帖子。
我想为按Post属性:published_on
排序的组创建所有主题的数组。
在我的群组展示页面上,我有@group.topics.collect {|x| x.posts }
,它返回一个ActiveRecord::Associations::CollectionProxy
数组,每个元素都包含一个帖子对象数组。
[
[[topic1 post],[topic1 post],[topic1 post]],
[[topic2 post],[topic2 post],[topic2 post]],
[[topic3 post],[topic3 post],[topic3 post]],
]
如何创建按照:published_on?
排序的单个帖子数组答案 0 :(得分:5)
我认为
group.topics.includes(:posts).order("posts.published_on").map(&:posts).flatten
就够了。
答案 1 :(得分:1)
您还可以通过正确的关系解决此问题。
在您的Group
模型上,您可以执行以下操作:
# you already have this relation
has_many :topics
# you add this
has_many :posts, through: :topics
through使用topics
就像posts
的桥梁一样,并返回posts
拥有的所有group
。
然后,您的查询将类似于
group.posts.order(:published_on)