【发布时间】:2010-11-19 16:39:05
【问题描述】:
MongoDB 中的常见做法是使用短键名来节省空间。例如,有人可能想要使用“fn”而不是“first_name”
但是,在您的应用程序中,如果您到处使用“fn”,您就会被搞砸。太丑了特别是对于 Rails,在 Mongoid 中声明字段时是否有一种简单的方法来指定别名?
另外,有人知道任何使用 Mongoid 的开源示例项目吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails mongodb mongoid
MongoDB 中的常见做法是使用短键名来节省空间。例如,有人可能想要使用“fn”而不是“first_name”
但是,在您的应用程序中,如果您到处使用“fn”,您就会被搞砸。太丑了特别是对于 Rails,在 Mongoid 中声明字段时是否有一种简单的方法来指定别名?
另外,有人知道任何使用 Mongoid 的开源示例项目吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails mongodb mongoid
你应该考虑使用
field :fn, :as => :firstname
如此处所述: http://groups.google.com/group/mongoid/browse_thread/thread/ce3298d6a167bd70
这是一个非常好的做法,mongoid 完全支持。
【讨论】:
firstname而不是fn。 Mongoid 只是在 mongo 内部将字段存储为fn。
我从未在任何 MongoDB 项目中看到过短键名,所以我不会说这是常见的做法。我认为您不会看到明显的速度提高,并且会使您的代码不必要地复杂化。描述性名称是好的,只要它们不是描述性的,以至于您需要永远输入。
有很多 MongoDB 开源项目。直接在github上搜索一下。
-- 在下面编辑--
这是一个相当自以为是的答案。覆盖其他答案中描述的处理方法(https://github.com/mongoid/mongoid/blob/master/lib/mongoid/attributes/processing.rb)在您必须具有小字段名称的情况下更合适。
【讨论】:
这样的东西应该可以在你的类文件中使用。 (它并没有在所有情况下都经过测试,只是将哈希传递给 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
【讨论】: