有人知道Mongoid是否内置了对别名字段名称的支持?我一直在运行一些测试,其中我有一个具有最少量字段的集合(7个字段)。如果我使用描述性名称并加载实际数据,然后使用大大缩短的名称并加载相同的真实数据,我看到我的集合总大小减少了40%。在查看MongoDB(非Ruby)的其他驱动程序时,我发现其中一些驱动程序内置了支持,您可以根据描述性名称编写代码,但持久性足够智能,可以使用开发人员定义的别名。我只是想确定Mongoid是否有类似的东西。
答案 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
这允许您的别名映射到创建或更新调用上的字段。然后跟踪字段映射的别名以抽象这个过程将是微不足道的。