迭代器为Mongoid文档返回一个额外的对象

时间:2013-01-16 18:11:16

标签: ruby-on-rails ruby iterator mongoid

使用Rails和Mongoid。

放下解释代码会更容易:

foo = User.all.to_a

尝试在我的Javascript中格式化为可接受的数据。但在我的迭代中:

var dump = []
<%= foo.each do |boop| %>
   dump.push( /*some formatted data using boop/*)
<% end %>

结果转储包含可接受的格式,但文档对象也添加在数组的末尾。

例如,使用rails控制台:

foo.each do |boop|
   print "#{boop.email}\n"
end

打印出电子邮件。然后在最后,在一行中打印出每个文档对象。

我的输出来自上面:

hobbes203@gmail.com
...
// Prints out emails until end

[#<User _id: 50edd7fe021823ea20000001, _type: nil, email: "hobbes203@gmail.com", password_digest: "$2a$10$xXixV8MlqGco0Qq7j5jQaOkXBWQ9cLgQ7yEOtQruxq.HiYg8GOJ4y", phone: nil, firstName: nil, lastName: nil, employNum: nil, dateMade: nil, role_id: "50edd7da021823db20000001">, ... #prints out rest of users in line.

db中的数组大小和计数是相同的。我还使用last检查了数组。我想通过获取数组的长度来使用计数迭代器,但我很好奇为什么会发生这种情况。

1 个答案:

答案 0 :(得分:1)

您看到的打印输出是操作的返回值。例如。

> Object.save 
=> true

你可以通过在块结束后传递“; 0”来抑制它,这仍然会打印输出,但会将返回值改为零。

foo.each {|boop| puts "#{boop.email}\n" };0