Sha256: 57fc02b15f329b95cd8ecb8aad8e6a6d2bfc9df552a21da7e7bf4e594607c4d3
Contents?: true
Size: 1.54 KB
Versions: 35
Compression:
Stored size: 1.54 KB
Contents
# encoding: utf-8 module Mongoid # This module contains behaviour for adding shard key fields to updates. # # @since 4.0.0 module Shardable extend ActiveSupport::Concern included do cattr_accessor :shard_key_fields self.shard_key_fields = [] end # Get the shard key fields. # # @note Refactored from using delegate for class load performance. # # @example Get the shard key fields. # model.shard_key_fields # # @return [ Array<String> ] The shard key field names. # # @since 1.0.0 def shard_key_fields self.class.shard_key_fields end # Get the document selector with the defined shard keys. # # @example Get the selector for the shard keys. # person.shard_key_selector # # @return [ Hash ] The shard key selector. # # @since 2.0.0 def shard_key_selector selector = {} shard_key_fields.each do |field| selector[field.to_s] = send(field) end selector end module ClassMethods # Specifies a shard key with the field(s) specified. # # @example Specify the shard key. # # class Person # include Mongoid::Document # field :first_name, :type => String # field :last_name, :type => String # # shard_key :first_name, :last_name # end # # @since 2.0.0 def shard_key(*names) names.each do |name| self.shard_key_fields << self.database_field_name(name).to_sym end end end end end
Version data entries
35 entries across 33 versions & 3 rubygems