我在从他的 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