【发布时间】:2021-05-21 18:11:17
【问题描述】:
我有一个带有评论 ID 和他的标题的哈希数组:
arr = [{comment_id: 1, title: 'Title 1'}, {comment_id: 5, title: 'Title 2'}]
对于每个哈希,我必须添加包含活动记录模型作为值的新 :key:
arr = [{comment_id: 1, user: #<User0x00007fd88dfe1b28>..., title: 'Title 1'},{comment_id: 5, user: #<User0x00005fd58dfe1a31>..., title: 'Title 2'}]
我找到的第一个解决方案是对每个哈希进行查询:
arr.each do |h|
h[:user] = Comment.find(h[:comment_id]).user
end
但使用单个 sql-query 会更好 类似:
comment_ids = arr.map {|h| h[:comment_id] }
users = User.joins(:comments).order('comments.id').where(comments: {id: comment_ids })
# so here I need to match User with comment_id from comment_ids
如果有人提出解决方案会很好。
【问题讨论】:
标签: ruby-on-rails rails-activerecord