Это моя схема:
Mention.rb
belongs_to :user
create_table "mentions", force: :cascade do |t|
t.integer "user_id", limit: 4
t.integer "mentionable_id", limit: 4
t.string "mentionable_type", limit: 191
t.datetime "created_at"
t.datetime "updated_at"
t.datetime "deleted_at"
end
User.rb
No Association.
Запрос:
mentions = Mention.joins(:user).where(mentions: {mentionable_type: 'Comment', mentionable_id: @comments_ids}).select('users.*, mentions.mentionable_id AS comment_id').group_by(&:comment_id)
Вывод:
=> {155=>
[#<Mention:0x00007ff51a309de8 id: 110, created_at: Thu, 07 Nov 2019 10:19:46 UTC +00:00, updated_at: Thu, 07 Nov 2019 10:19:46 UTC +00:00, deleted_at: nil>,
#<Mention:0x00007ff51a3092f8 id: 112, created_at: Thu, 07 Nov 2019 10:19:46 UTC +00:00, updated_at: Thu, 07 Nov 2019 10:19:46 UTC +00:00, deleted_at: nil>],
156=>[#<Mention:0x00007ff51a3098e8 id: 111, created_at: Thu, 07 Nov 2019 10:19:46 UTC +00:00, updated_at: Thu, 07 Nov 2019 10:19:46 UTC +00:00, deleted_at: nil>]}
id:110
, которое здесь находится в выводе, имеет значение user
, а 115
равно mentionable_id
.
Как я могу получить полный объект пользователя с group_by упоминанием_id?
Ожидается:
=> {155=>
[#<User:0x00007ff51a309de8 id: 110, name: "abc", email: 'xyz@mail.com', deleted_at: nil>,
#<User:0x00007ff51a3092f8 id: 112, name: "abc", email: 'xyz@mail.com', deleted_at: nil>],
156=>[#<User:0x00007ff51a3098e8 id: 111, name: "abc", email: 'xyz@mail.com', deleted_at: nil>]}