ruby-on-rails - 将 Active Record 集转换为哈希数组

标签 ruby-on-rails

我看到了这个...

How to convert activerecord results into a array of hashes

并想创建一种方法,允许我将任何范围或非范围记录集转换为哈希数组。我将此添加到我的模型中:

 def self.to_hash
   to_a.map(&:serializable_hash)
 end

但是,我收到此错误。
NameError: undefined local variable or method `to_a' for #<Class:0x007fb0da2f2708>

任何的想法?

最佳答案

您可能需要调用 all对此也是如此。只需 to_a可以在范围或现有结果集(例如 User.active.to_hash )上正常工作,但不能直接在模型上工作(例如 User.to_hash )。使用 all.to_a将适用于这两种情况。

def self.to_hash
  all.to_a.map(&:serializable_hash)
end

请注意 all.to_aall 开始有点重复已经返回一个数组,但在 Rails 4 中它是必需的。

关于ruby-on-rails - 将 Active Record 集转换为哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225232/

相关文章:

ruby-on-rails - 为什么每次使用 rvm 在 rails 3.2.1 中重启后都需要 "bundle install"?

ruby-on-rails - rails user_signed_in 的参数数量错误(2 对 1)?和当前用户

ruby-on-rails - 数据表选项不起作用

mysql - 添加外键到rails数据库

ruby-on-rails - 需要用户身份验证的页面的元标记是否有帮助?

ruby-on-rails - 有没有办法在 Sidekiq 在工作中重新启动之前运行代码?

ruby-on-rails - rails : Parse route information from URL

ruby-on-rails - 通过 PROXY、ruby 的 HTTP2 请求

ruby-on-rails - 具有Elastic gem的带有胎面 gem 的嵌入式文档的索引字段?

mysql - 连接表属性的 Activerecord OR 条件