在Hartl的脚手架应用程序中找到Rails User.all错误 - 为什么User.all没有响应像哈希数组的命令?

时间:2013-05-13 12:13:26

标签: ruby-on-rails-3 scaffold

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

我进入了rails控制台

rails c

我要求 User.all 哈希数组,并通过它的步伐来实现:

2.0.0-p0:012> User.all

  User Load (0.3ms)  SELECT "users".* FROM "users" 
 => [#<User id: 2, name: "Lisa Johnson", email: "ljohnson@yahoo.com", created_at: "2013-04-02 03:30:06", updated_at: "2013-04-02 03:30:06">]

2.0.0-p0:013&gt; User.all [0]

  User Load (0.2ms)  SELECT "users".* FROM "users" 
 => #<User id: 2, name: "Lisa Johnson", email: "ljohnson@yahoo.com", created_at: "2013-04-02 03:30:06", updated_at: "2013-04-02 03:30:06"> 

2.0.0-p0:015&gt; User.all [0] [ 'ID']

  User Load (0.2ms)  SELECT "users".* FROM "users" 
 => 2 

到目前为止,非常好。

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

2.0.0-p0:017&gt; User.all {| i |把我['id']}

  User Load (0.2ms)  SELECT "users".* FROM "users" 
 => [#<User id: 2, name: "Lisa Johnson", email: "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&gt; User.all {| i |把我['name']}

  User Load (0.3ms)  SELECT "users".* FROM "users" 
 => [#<User id: 2, name: "Lisa Johnson", email: "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&gt; a.each {| i |把我['id']}

2
 => [#<User id: 2, name: "Lisa Johnson", email: "ljohnson@yahoo.com", created_at: "2013-04-02 03:30:06", updated_at: "2013-04-02 03:30:06">]

2.0.0-p0:022&gt; a.each {| i |把我['name']}

Lisa Johnson
 => [#<User id: 2, name: "Lisa Johnson", email: "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的人需要查看所有方法。无论它有什么价值,我都在使用rails 3.2.12

1 个答案:

答案 0 :(得分:0)

无需讨论 - 这是一个简单的错误报告。如果有问题,那么问题就是“为什么 User.all 的行为不像哈希数组呢?”