Mongoid中的字段别名

时间:2010-12-09 03:36:56

标签: ruby-on-rails mongodb mongoid

有人知道Mongoid是否内置了对别名字段名称的支持?我一直在运行一些测试,其中我有一个具有最少量字段的集合(7个字段)。如果我使用描述性名称并加载实际数据,然后使用大大缩短的名称并加载相同的真实数据,我看到我的集合总大小减少了40%。在查看MongoDB(非Ruby)的其他驱动程序时,我发现其中一些驱动程序内置了支持,您可以根据描述性名称编写代码,但持久性足够智能,可以使用开发人员定义的别名。我只是想确定Mongoid是否有类似的东西。

3 个答案:

答案 0 :(得分:5)

实际上,最好的方法是不使用ruby别名,但是:

field :fn, :as => :firstname

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

答案 1 :(得分:0)

根据this answer,您应该可以像这样使用alias

class Foo
  include Mongoid::Document

  field :fn, :type => String
  alias :first_name :fn
end

请注意,这不会让您在查询中使用别名,并可能导致一些错误。在实例方法和视图中简单使用应该没问题。

答案 2 :(得分:0)

实际上,还必须包含以下内容,以便将散列传递给new或update_attributes:

  alias :filtered_process :process

  def process(attrs = nil)
    attrs[:fn] = attrs[:first_name] unless attrs.nil?
    filtered_process(attrs)
  end

这允许您的别名映射到创建或更新调用上的字段。然后跟踪字段映射的别名以抽象这个过程将是微不足道的。