代码之家  ›  专栏  ›  技术社区  ›  Tony

带有mongoid和rails的字段别名

  •  7
  • Tony  · 技术社区  · 15 年前

    在MongoDB中,为了节省空间,通常使用短密钥名。例如,您可能希望使用“fn”而不是“first_name”

    但是在你的应用程序中,如果你到处使用“fn”,你就完蛋了。太难看了。对于Rails,在MongoID中声明字段时,是否有一种简单的方法来指定别名?

    另外,有人知道使用MongoID的任何开源示例项目吗?

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  12
  •   z3cko    14 年前

    你应该考虑使用

     field :fn, :as => :firstname
    

    如前所述: http://groups.google.com/group/mongoid/browse_thread/thread/ce3298d6a167bd70

    这是一个非常好的实践,在MongoID中得到了充分的支持。

        2
  •  3
  •   Dave Rapin    15 年前

    我从来没有在任何MongoDB项目中看到过短键名称,所以我不会说这是常见的做法。我认为您不会看到显著的速度提高,这会不必要地使代码复杂化。描述性名称很好,但它们的描述性不是很好,以至于你需要永远打字。

    有很多MongoDB开源项目。只需在Github上搜索。

    --在下面编辑--

    这是一个相当固执己见的答案。覆盖处理方法( https://github.com/mongoid/mongoid/blob/master/lib/mongoid/attributes/processing.rb )如其他答案中所述,在必须具有小字段名的情况下更合适。

        3
  •  0
  •   justdewit    15 年前

    类文件中应该有这样的内容。(它并没有在所有情况下进行测试,只是将哈希传递到create或update中。)

      field :fn, :type => String
    
      alias :first_name :fn
      alias :filtered_process :process
    
      def process(attrs = nil)
        attrs[:fn] = attrs[:first_name] unless attrs.nil?
        filtered_process(attrs)
      end