Field aliases with Mongoid and Rails

前端 未结 3 697
萌比男神i
萌比男神i 2021-01-02 13:56

It\'s common practice in MongoDB to use short key names to save space. For example, one might want to use \"fn\" instead of \"first_name\"

However in your app, you\

相关标签:
3条回答
  • 2021-01-02 14:36

    I've never seen short key names in any MongoDB projects, so I wouldn't say it's common practice. I don't think you'd see a noticeable speed improvement and it would complicate your code unnecessarily. Descriptive names are good so long they aren't so descriptive that it takes you forever to type.

    There's lots of MongoDB open-source projects. Just do a search on github.

    -- edit below --

    This was a pretty opinionated answer. Overwriting the processing methods (https://github.com/mongoid/mongoid/blob/master/lib/mongoid/attributes/processing.rb) as described in other answers is more appropriate in the scenario where you MUST have small field names.

    0 讨论(0)
  • 2021-01-02 14:42

    you should consider using

     field :fn, :as => :firstname
    

    as outlined here: http://groups.google.com/group/mongoid/browse_thread/thread/ce3298d6a167bd70

    this is a very good practice which is fully supported in mongoid.

    0 讨论(0)
  • 2021-01-02 14:46

    Something like this should work in your class file. (It hasn't been tested in all cases, just passing a hash into create or 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
    
    0 讨论(0)
提交回复
热议问题