【问题标题】:Is there an ActiveRecord version of Hash.Merge?是否有 Hash.Merge 的 ActiveRecord 版本?
【发布时间】:2011-08-18 19:50:10
【问题描述】:

我有一个非常大的数据集,我正在对这些数据进行大量的查询后操作(排序、过滤等)。我想对仅包含排序、过滤和分页所需信息的 ActiveRecord 对象数组进行所有这些操作,然后在最后添加显示所需的数据。

例如,假设我有一个包含两个表的数据库:balloon_players 和 player_infos。棒球运动员表包含所有有趣的东西(统计数据、球队、姓名、生日等)。 Player_infos 包含 player_id、player_rank 和 player_position。我有 15000 名球员,我想找到 100 到 150 名有史以来最好的接球手。我检索了一个包含所有 player_infos 的数组,过滤到仅捕手,按 player_rank 排序,然后检索记录 100-150。

将生成的 player_info 记录与其对应的棒球运动员记录合并的最佳方法是什么? Hash.merge 可以完美运行,但我不想将这些对象转换为哈希。 ActiveRecord 是否支持类似的东西?

请注意,我有一个限制,我不能简单地使用 SQL 查询数据 - 我必须手动排序和过滤包含所有 15000 个 player_info 记录的对象。

【问题讨论】:

  • 为什么不想将对象转换为哈希?是否只是通过命名方法(player.name)而不是哈希键(player[:name])保留对属性的访问?

标签: ruby activerecord


【解决方案1】:

我相信你正在寻找ActiveRecord::Base#update

【讨论】:

  • 我不想做任何影响数据库中数据的事情 - 我只想根据主键将一个对象与另一个对象合并,并显示来自这两个对象的数据。
  • 哦,我完全不明白。您可以用显示三条记录的示例来更新您的问题,而不是 100-150 条记录吗?您是否有 3 条 player_info 记录,但有 15,000 条棒球运动员记录,并且您需要为每个 player_info 记录找到单个关联的棒球运动员记录?然后你想将这两个 ActiveRecord 对象合并到一些新对象中,该对象将两个模型的属性都公开为方法?
猜你喜欢
  • 2011-10-18
  • 2011-11-05
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多