首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在rails控制台中调用.all时,表中除第一行之外的所有行都显示为“#”?

为什么在rails控制台中调用.all时,表中除第一行之外的所有行都显示为“#”?
EN

Stack Overflow用户
提问于 2014-07-27 16:22:21
回答 1查看 51关注 0票数 0

我正在学习rails中的模型和数据库,当我创建一个表时,我可以在模型上调用.all并得到一个空数组,但是如果我创建多个行并调用.all,我就会得到一个数组,其中只有第一行显示实际值,其余的是#

为什么控制台不显示所有的行值,如果没有,我如何才能在不调用每个行的情况下查看行的所有值?

铁标(Main):001:0> Todo.all Todo Load (0.1ms)从"todos".*中选择"todos“[#<Todo id: 1, todo_item: "pick up milk", created_at: "2014-07-27 15:45:11", updated_at: "2014-07-27 15:45:11">, #, #] 铁标(Main):001:0> Todo.all.second Todo Load (0.1ms)从"todos“中选择"todos".*

代码语言:javascript
复制
#<Todo id: 2, todo_item: "Pay internet bill", created_at: "2014-07-27 15:47:42", updated_at: "2014-07-27 15:47:42">
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-27 22:05:51

我确信这是控制台的一个特性,它缩短了输出,在不填充输出空间的情况下显示模型的属性。如果您需要查看实际属性,请尝试对要查看的内容进行收集:

代码语言:javascript
复制
TODO.all.collect{|x| x.todo_item}

或者整个物体..。

代码语言:javascript
复制
 TODO.all.collect{|x| x.inspect}

一种很好的方法是编写一个定制的to_s方法,其中包含您最想看到和使用的内容。在你的模型里..。

代码语言:javascript
复制
def to_s
  "TODO: #{id} - #{todo_item}"
end

像这样使用它:

代码语言:javascript
复制
TODO.all.collect{|x| x.to_s}

自定义to_s的结果是,它也将被许多调试工具和红宝石字符串注入所使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24982921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档