如何获取联接中的对象?

这是我的模式:

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,deleted_at: nil>,#<Mention:0x00007ff51a3092f8 id: 112,deleted_at: nil>],156=>[#<Mention:0x00007ff51a3098e8 id: 111,deleted_at: nil>]}
输出中的

id:110user,而115mentionable_id

我如何获得具有group_by得以提及的ID的完整用户对象?

预期:

=> {155=>
      [#<User:0x00007ff51a309de8 id: 110,name: "abc",email: 'xyz@mail.com',#<User:0x00007ff51a3092f8 id: 112,156=>[#<User:0x00007ff51a3098e8 id: 111,deleted_at: nil>]}
lk38264945 回答:如何获取联接中的对象?

您需要通过User进行查询:

User.joins(:mentions)
    .where(mentions: { mentionable_type: 'Comment',mentionable_id: @comments_ids })
    .select('users.*,mentions.mentionable_id AS comment_id')
    .group_by(&:comment_id)
本文链接:https://www.f2er.com/3145070.html

大家都在问