gpt4 book ai didi

ruby-on-rails - 使用主键作为事件记录读取的索引,Rails

转载 作者:行者123 更新时间:2023-12-02 17:14:13 25 4
gpt4 key购买 nike

当我使用 users=User.where(...)我可以使用 users.find(id) 通过它的 id 来查找

我想使用一个散列,这样我就可以使用 users[id] 作为一种搜索方式,其中 id 成为散列的索引。

我该怎么做?

我试过:

users.to_a.map(&:serializable_hash)
users.map(&:attributes)
users.map { |r| r.attributes.symbolize_keys }

这些都无法将主键转换为索引

最佳答案

要将任何 Enumerable 转换为 Hash,您可以使用 index_by来自 ActiveSupport (activesupport/lib/active_support/core_ext/enumerable.rb)

users = User.where(...)
users.index_by(&:id)
# => { 1 => <User ...>, 2 => <User ...>, ...}

# note the difference between 'index_by' and 'group_by' where the latter will return an array of a single User for each id
users.group_by(&:id)
# => { 1 => [<User ...>], 2 => [<User ...>], ...}

由于 ActiveRecord::Relation 在其祖先链中包含 Enumerable 模块(您可以通过 ActiveRecord::Relation.ancestors.include?Enumerable 检查code>),您可以在任何 ActiveRecord::Relation 对象上使用任何 Enumerable 实例方法。

关于ruby-on-rails - 使用主键作为事件记录读取的索引,Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47362015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com