0

我在从他的 rails 教程中复制 Michael Hartl 的脚手架式 rails demo_app 时发现了这个错误。

我进入了rails控制台

导轨 c

我要求User.all散列数组并通过它的步伐输出它:

2.0.0-p0 :012 > User.all

  用户负载 (0.3ms) SELECT "users".* FROM "users"
 => [#<用户ID:2,姓名:“Lisa Johnson”,电子邮件:“ljohnson@yahoo.com”,created_at:“2013-04-02 03:30:06”,updated_at:“2013-04-02 03:30:06">]

2.0.0-p0 :013 > User.all[0]

  用户负载 (0.2ms) SELECT "users".* FROM "users"
 => #<用户ID:2,姓名:“Lisa Johnson”,电子邮件:“ljohnson@yahoo.com”,created_at:“2013-04-02 03:30:06”,updated_at:“2013-04-02 03 :30:06">

2.0.0-p0 :015 > User.all[0]['id']

  用户负载 (0.2ms) SELECT "users".* FROM "users"
 => 2

到目前为止,一切都很好。

但是,User.all 不会响应列出所有用户的 ID 或名称的命令:

2.0.0-p0 :017 > User.all { |i| 放 i['id'] }

  用户负载 (0.2ms) SELECT "users".* FROM "users"
 => [#<用户ID:2,姓名:“Lisa Johnson”,电子邮件:“ljohnson@yahoo.com”,created_at:“2013-04-02 03:30:06”,updated_at:“2013-04-02 03:30:06"GT;]

2.0.0-p0 :019 > User.all{ |i| 把 i['name'] }

  用户负载 (0.3ms) SELECT "users".* FROM "users"
 => [#<用户ID:2,姓名:“Lisa Johnson”,电子邮件:“ljohnson@yahoo.com”,created_at:“2013-04-02 03:30:06”,updated_at:“2013-04-02 03:30:06">]

将任意变量a分配给哈希数组 User.all 解决了这个问题:

2.0.0-p0 :021 > a.each {|i| 放 i['id'] }

2
 => [#<用户ID:2,姓名:“Lisa Johnson”,电子邮件:“ljohnson@yahoo.com”,created_at:“2013-04-02 03:30:06”,updated_at:“2013-04-02 03:30:06">]

2.0.0-p0 :022 > a.each {|i| 把 i['name'] }

丽莎约翰逊
 => [#<用户ID:2,姓名:“Lisa Johnson”,电子邮件:“ljohnson@yahoo.com”,created_at:“2013-04-02 03:30:06”,updated_at:“2013-04-02 03:30:06">]

User.all问题至少影响 ruby​​ 版本 1.9.2、1.9.3 和 2.0.0。负责编写创建User.all的 gem 的人需要检查他的all 方法。不管它值多少钱,我都在使用 rails 3.2.12

4

1 回答 1

0

没什么好讨论的 - 它是一个简单的错误报告。如果有问题,问题将是“为什么User.all的行为不像散列数组那样?”

于 2013-05-13T12:13:25.620 回答