我正在使用 Mongoid 并检索一堆BSON::ObjectId
实例。理想情况下,我想在检索时将它们转换为字符串。什么是正确的语法?可以像这样分两行完成:
foo = Bar.where(:some_id => N).map(&:another_id)
ids_as_strings = foo.map(&:to_s)
to_s
在上面的地图调用之后,正确的 Ruby 链接方式是什么?
我正在使用 Mongoid 并检索一堆BSON::ObjectId
实例。理想情况下,我想在检索时将它们转换为字符串。什么是正确的语法?可以像这样分两行完成:
foo = Bar.where(:some_id => N).map(&:another_id)
ids_as_strings = foo.map(&:to_s)
to_s
在上面的地图调用之后,正确的 Ruby 链接方式是什么?
这工作正常,但不要这样做!
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}
这应该是在这种情况下要走的路,实际上看起来更好。
您可以直接链接它:
ids_as_string = Bar.where(:some_id => N).map(&:another_id).map(&:to_s)
我用一个模型尝试了这个,我得到了你所期望的,比如:
["1", "2", ...]