Полевые псевдонимы с Mongoid и Rails - PullRequest
7 голосов
/ 19 ноября 2010

В MongoDB распространена практика использования коротких имен клавиш для экономии места. Например, можно использовать «fn» вместо «first_name»

Однако в вашем приложении вы ошибаетесь, если используете «fn» повсюду. Это слишком уродливо. В частности, для Rails существует ли простой способ указать псевдоним при объявлении поля в Mongoid?

Кроме того, кто-нибудь знает о каких-либо проектах с открытым исходным кодом, которые используют Mongoid?

Спасибо!

Ответы [ 3 ]

12 голосов
/ 16 июля 2011

вы должны рассмотреть возможность использования

 field :fn, :as => :firstname

как указано здесь: http://groups.google.com/group/mongoid/browse_thread/thread/ce3298d6a167bd70

это очень хорошая практика, которая полностью поддерживается в монгоиде.

3 голосов
/ 22 ноября 2010

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

Существует множество проектов с открытым исходным кодом MongoDB. Просто выполните поиск на github.

- редактировать ниже -

Это был довольно самоуверенный ответ. Перезапись методов обработки (https://github.com/mongoid/mongoid/blob/master/lib/mongoid/attributes/processing.rb), как описано в других ответах, более уместна в сценарии, в котором вы ДОЛЖНЫ иметь небольшие имена полей.

0 голосов
/ 09 декабря 2010

Примерно так должно работать в вашем файле класса.(Это не было проверено во всех случаях, просто передавая хеш в 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
...