mysql - 如何获取连接中的对象?

标签 mysql ruby-on-rails ruby object

这是我的架构:

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

用户.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:110user115mentionable_id

如何使用 group_by mentionable_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>]}

最佳答案

需要通过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)

关于mysql - 如何获取连接中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58748290/

相关文章:

ruby-on-rails - Rails 中如何渲染链接

php - 如何根据同一 SELECT 中的不同 ID 从表中获取两个值

php - 产品图片分辨率问题 woocommerce/wordpress

mysql - 成功导入 ShopWare 5.4.6 后,只有 XML 文件中的最后一篇文章可见

ruby-on-rails - Ruby on Rails/PostgreSQL - 启动服务器时库未加载错误

ruby-on-rails - 给定一组嵌套规则来决定值的最合乎逻辑的方法是什么?我们如何存储它?

java - JavaFX嵌入式应用程序可以与远程mysql数据库通信吗

ruby-on-rails - 如何在 Rails 3 中测试 nil 或空条件?

Ruby on Rails - 在哪里放置这些辅助类型方法

ruby-on-rails - 如何在 Rails 环境中将参数传递给 Rake 任务?