Module: Mongoid::Shardable::ClassMethods
- Defined in:
- lib/mongoid/shardable.rb
Instance Method Summary collapse
-
#shard_key(*args) ⇒ Object
Specifies a shard key with the field(s) specified.
Instance Method Details
#shard_key(*args) ⇒ Object
Specifies a shard key with the field(s) specified.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/mongoid/shardable.rb', line 120 def shard_key(*args) unless args.first.is_a?(Hash) # Shorthand syntax if args.last.is_a?(Hash) raise ArgumentError, 'Shorthand shard_key syntax does not permit options' end spec = Hash[args.map do |name| [name, 1] end] return shard_key(spec) end if args.length > 2 raise ArgumentError, 'Full shard_key syntax requires 1 or 2 arguments' end spec, = args spec = Hash[spec.map do |name, value| if value.is_a?(Symbol) value = value.to_s end [database_field_name(name).to_sym, value] end] self.shard_key_fields = spec.keys self.shard_config = { key: spec.freeze, options: ( || {}).dup.freeze, }.freeze end |