3

我正在使用 Mongoid 并检索一堆BSON::ObjectId实例。理想情况下,我想在检索时将它们转换为字符串。什么是正确的语法?可以像这样分两行完成:

foo = Bar.where(:some_id => N).map(&:another_id)
ids_as_strings = foo.map(&:to_s)

to_s在上面的地图调用之后,正确的 Ruby 链接方式是什么?

4

2 回答 2

9

这工作正常,但不要这样做!

ids_as_string = Bar.where(:some_id => N).map(&:another_id).map(&:to_s)

它看起来确实很酷,但想想看,你正在做两张地图。映射用于循环数组或其他内容,并将在每个位置进行操作,检索新数组或其他内容以及结果。

那么,如果要进行两次操作,为什么要进行两次循环呢?

ids_as_string = Bar.where(:some_id => N).map {|v| v.another_id.to_s}

这应该是在这种情况下要走的路,实际上看起来更好。

于 2012-05-16T01:46:48.427 回答
1

您可以直接链接它:

ids_as_string = Bar.where(:some_id => N).map(&:another_id).map(&:to_s)

我用一个模型尝试了这个,我得到了你所期望的,比如:

["1", "2", ...]
于 2012-05-16T00:53:53.553 回答