如何在Rails控制台上抑制一些输出

时间:2012-03-08 19:31:56

标签: ruby-on-rails ruby console

一旦我做了一个rails c并从db中得到一些行,就像这样:

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

然后用户说了20个结果

如果我再做一次

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

然后在打印完所有男性名字后,控制台再次输出用户对象的所有内容。我需要再次看到它。我怎么能抑制它?我感兴趣的是put的输出

1 个答案:

答案 0 :(得分:19)

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

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

此代码的值为users对象本身,并且已正确打印。使用puts打印的内容是副作用。

您仍然可以通过更改此表达式的返回值来禁止打印users的完整内容。例如,像这样:

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