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