读书人

mongoid没的set_defaults rake

发布时间: 2012-08-24 10:00:21 作者: rapoo

mongoid没有的set_defaults rake

?

?#https://github.com/iamnader/mongoid/commit/ffb5a2b05202fe14e3b6b397382b02fcf402081f

?

?? def valid_mongo_type(t)

      [Array, BigDecimal, Boolean, Date, DateTime, Float, Hash, Integer, String, Symbol, Time, BSON::ObjectId].include?(t)    end    desc "Default existing document values"    task :set_defaults => :environment do      models = get_mongoid_models      models.each do |m|        # get fields that have defaults set        fields_with_defaults = m.fields.select {|k,v| v.options.include?(:default)}        fields_with_defaults.each do |f|          field_name = f[0]          default_value = f[1].options[:default]          field_type = f[1].options[:type] || String # String is the default type          # the default could be a new document, so we don't worry about those          if valid_mongo_type(field_type)            # update all the documents of the collection to set the default field if the field is not set            result = Mongoid.master.collection(m.collection.name).update({field_name => {'$exists' => false}}, {'$set' => {field_name => default_value}}, :multi => true, :safe => true)              puts "Updated #{result.first.first['n']} #{m.name} documents to use a default of: #{default_value}"          end        end      end    end
?

读书人网 >其他数据库

热点推荐