2010-12-09 4 views
2

Кто-нибудь знает, поддерживает ли Mongoid поддержку имен псевдонимов? Я провел несколько тестов, где у меня есть коллекция с минимальным количеством полей (7 полей). Если я использую описательные имена и загружаю реальные данные, а затем использую значительно сокращенные имена и загружаю одни и те же данные в реальном мире, я вижу 40% -ное сокращение общего размера моей коллекции. Рассматривая другие драйверы для MongoDB (non Ruby), я вижу, что некоторые из них имеют встроенную поддержку, где вы можете писать код с описательным именем, но настойчивость достаточно умна, чтобы использовать определенные разработчиком псевдонимы. Я просто пытаюсь определить, имеет ли Монгоид ничего подобного.Полевое наложение в Mongoid

ответ

0

На самом деле, следующие должны быть включены для передачи хэша новым или update_attributes:

alias :filtered_process :process 

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

Это позволяет ваш псевдоним будет отображаться в поле на создании или обновлении вызовов. Было бы тривиально отслеживать псевдоним для сопоставлений полей, чтобы абстрагировать этот процесс.

+0

Это не самый лучший способ это сделать, смотри ответ от z3cko в качестве ruby alias добавляет другое имя метода, когда у mongoid уже есть способ сделать это. – 2012-07-19 17:27:23

0

Согласно this answer, вы должны быть в состоянии использовать только alias так:

class Foo 
    include Mongoid::Document 

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

Имейте в виду, что это не позволит вам использовать псевдоним в запросах и может вызвать некоторые ошибки. Это должно быть хорошо для простого использования в примерах методов и представлений.

Смежные вопросы