【问题标题】:Is the object that comes back as a result of a database query, an array or hash?作为数据库查询的结果返回的对象是数组还是散列?
【发布时间】:2017-12-31 01:38:15
【问题描述】:

想知道当从数据库返回查询时,对象会返回什么样的形式。

例如:

@Users = User.all

我在想,当 all 方法从数据库中查询所有用户时,它会以数组的形式返回,因为最终会在视图中使用 each 方法。

但是当我在控制台中查看时,返回的对象看起来像一个哈希,但有方括号,所以我想知道这个对象返回的是什么。

控制台如何显示返回的对象:

[#<User id: 1, email: "example@gmail.com"...>]>

【问题讨论】:

  • User.all.class.name? #&lt;User id: ...&gt; 是标准 AR #to_s 调用的结果。
  • “它是数组还是散列” - 两者都不是。它是一个类集合对象(或类数组),其中包含您的模型对象。

标签: ruby-on-rails ruby database rails-activerecord


【解决方案1】:

http://guides.rubyonrails.org/active_record_basics.html

它作为 rails 所说的活动记录关系返回。它拥有可用于数组的大部分方法,并且可以访问从数据库中检索记录的特定方法,其速度比标准查询快得多,请参阅“where”。

【讨论】:

  • 因此,活动记录关系对象的 each 方法与 Array 对象本身的 each 方法不同。
  • @Robert eachEnumerator 类的方法。
  • @Deep: 许多对象都有each 方法。数组有它自己的。并且ActiveRecord::Relation#each 被委托给数组。此处未使用枚举器。
  • @Deep hmmm 所以 ActiveRecord_relation 对象和 Array 对象都继承?来自 Enumerator 类,所以两个对象都可以使用 each 方法?我认为 each 方法几乎只用于数组。
  • @SergioTulentsev 因此,ActiveRecord_relation 具有的每种方法都与 Array 对象具有的方法不同。 Active Record_relation 的 each 方法的工作原理与用于 Array 的 each 方法非常相似,对吗?
猜你喜欢
  • 2012-12-17
  • 2013-05-18
  • 2019-05-25
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2019-03-21
相关资源
最近更新 更多