Как сгруппировать массив ruby ​​по идентификатору в хэше - PullRequest
0 голосов
/ 23 мая 2018

У меня есть две модели сообщений и тема, которая имеет отношение один ко многим

#Post.rb
class Post < ApplicationRecord
  belongs_to :topic
  validates :topic_id, presence: true
  validates :title, presence: true
  validates :body, presence: true
end

, если у меня есть массив сообщений, позвонив Post.all, например,

    #<ActiveRecord::Relation [#<Post id: 1, title: "Rails Code", body: "class TopicsController < ApplicationController\r\n  ...", created_at: "2018-05-22 09:34:15", updated_at: "2018-05-22 09:34:15", topic_id: "2">, 
#<Post id: 2, title: "Post with tags", body: "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...", created_at: "2018-05-22 11:48:54", updated_at: "2018-05-22 11:48:54", topic_id: "2">, 
#<Post id: 3, title: "12hello world12", body: "12312sdfsdfsdsdsdsd31231231231231", created_at: "2018-05-23 12:54:02", updated_at: "2018-05-23 12:54:02", topic_id: "2">,
 #<Post id: 4, title: "12hello world12", body: "12312sdfsdfsdsdsdsd31231231231231", created_at: "2018-05-23 12:54:09", updated_at: "2018-05-23 12:54:09", topic_id: "1">,
 #<Post id: 5, title: "12hellsdssdo world12", body: "12312sdfsdfsdsdsdsd31231231231231", created_at: "2018-05-23 12:54:15", updated_at: "2018-05-23 12:54:15", topic_id: "1">]>

isесть способ, которым я мог бы сгруппировать их по topic_id, чтобы я мог отображать их по темам

пример

Topic - 1
post 1    post2   post 3
Topic -2
post4   post5

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Используйте это:

Post.all.group_by(&:topic_id).each do |topic_id, posts|
  ...
end
0 голосов
/ 23 мая 2018

Нашел ответ.Вы можете сделать это, используя Ruby's Enumerable#group_by:

post.group_by{|post| post.topic_id}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...