class PgParty::ModelInjector
Public Class Methods
new(model, *key, &blk)
click to toggle source
# File lib/pg_party/model_injector.rb, line 5 def initialize(model, *key, &blk) @model = model @key = key.flatten.compact @key_blk = blk end
Public Instance Methods
inject_hash_methods()
click to toggle source
# File lib/pg_party/model_injector.rb, line 23 def inject_hash_methods require "pg_party/model/hash_methods" inject_methods_for(PgParty::Model::HashMethods) end
inject_list_methods()
click to toggle source
# File lib/pg_party/model_injector.rb, line 17 def inject_list_methods require "pg_party/model/list_methods" inject_methods_for(PgParty::Model::ListMethods) end
inject_range_methods()
click to toggle source
# File lib/pg_party/model_injector.rb, line 11 def inject_range_methods require "pg_party/model/range_methods" inject_methods_for(PgParty::Model::RangeMethods) end
Private Instance Methods
create_class_attributes()
click to toggle source
# File lib/pg_party/model_injector.rb, line 40 def create_class_attributes @model.class_attribute( :partition_key, :complex_partition_key, instance_accessor: false, instance_predicate: false ) if @key_blk @model.partition_key = @key_blk.call @model.complex_partition_key = true else if @key.size == 1 @model.partition_key = @key.first else @model.partition_key = @key end @model.complex_partition_key = false end end
inject_methods_for(mod)
click to toggle source
# File lib/pg_party/model_injector.rb, line 31 def inject_methods_for(mod) require "pg_party/model/shared_methods" @model.extend(PgParty::Model::SharedMethods) @model.extend(mod) create_class_attributes end