我在他的导轨教程中复制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
答案 0 :(得分:0)
无需讨论 - 这是一个简单的错误报告。如果有问题,那么问题就是“为什么 User.all 的行为不像哈希数组呢?”