具有Mongoid和Rails的字段别名

时间:2010-11-19 16:39:06

标签: ruby-on-rails mongodb mongoid

MongoDB中常见的做法是使用短密钥名称来节省空间。例如,可能想要使用“fn”而不是“first_name”

然而,在你的应用程序中,如果你在整个地方使用“fn”,那就搞砸了。太难看了。特别是对于Rails,在Mongoid中声明一个字段时是否有一种简单的方法来指定别名?

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

谢谢!

3 个答案:

答案 0 :(得分:12)

你应该考虑使用

 field :fn, :as => :firstname

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

这是一个非常好的做法,在mongoid中完全支持。

答案 1 :(得分:3)

我从未在任何MongoDB项目中看到过短名称,所以我不会说这是常见做法。我认为你没有看到明显的速度改进,它会使你的代码不必要地复杂化。描述性名称很好,所以它们不是那么描述性的,它会让你永远输入。

有很多MongoDB开源项目。只需在github上搜索一下。

- 在下面编辑 -

这是一个非常自以为是的答案。如其他答案中所述,覆盖处理方法(https://github.com/mongoid/mongoid/blob/master/lib/mongoid/attributes/processing.rb)更适合于必须具有小字段名称的场景。

答案 2 :(得分:0)

这样的东西应该在你的类文件中起作用。 (它并未在所有情况下都经过测试,只是将哈希传递给创建或更新。)

  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