如何在Rails控制台中抑制部分输出

3

当我在Rails控制台中执行命令并从数据库获取一些行,如下所示:

users = User.find(:all,:conditions => ["some conds"])

如果用户有20个结果,那么我进行以下操作:

users.each do |u|
  puts u.name if u.gender == 'male'
end

在打印了所有男性姓名后,控制台会再次输出用户对象的所有内容。我不需要再看一遍。我该如何抑制它呢?我只对puts的输出感兴趣。

1个回答

20

这就是控制台的工作原理。你输入一个表达式,它会打印出它的值。

users.each do |u|
  puts u.name if u.gender == 'male'
end

这段代码的值是users对象本身,并且它被正确地打印出来了,使用puts打印出来的是一个副作用。

你仍然可以通过改变表达式的返回值来抑制完整内容的打印,例如像这样:

users.each do |u|
  puts u.name if u.gender == 'male'
end && false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接