module GroongaClientModel::Modelize

Public Instance Methods

entry_name(options={}) click to toggle source

For Kaminari

# File lib/groonga_client_model/modelize.rb, line 24
def entry_name(options={})
  model_name = @model_class.model_name
  if options[:count] == 1
    default = model_name.human
  else
    default = model_name.human.pluralize
  end
  model_name.human(options.reverse_merge(default: default))
end
model_class=(model_class) click to toggle source
# File lib/groonga_client_model/modelize.rb, line 19
def model_class=(model_class)
  @model_class = model_class
end
records() click to toggle source
Calls superclass method
# File lib/groonga_client_model/modelize.rb, line 34
def records
  @modelized_records ||= build_records(super)
end

Private Instance Methods

build_attributes(columns, raw_record) click to toggle source
# File lib/groonga_client_model/modelize.rb, line 49
def build_attributes(columns, raw_record)
  attributes = {}
  dynamic_attributes = {}
  raw_record.each do |name, value|
    primary_name, sub_name = name.split(".", 2)
    if sub_name.nil?
      if columns.exist?(primary_name)
        if attributes.key?(primary_name)
          value = attributes[primary_name].merge("_key" => value)
        end
        attributes[primary_name] = value
      else
        dynamic_attributes[primary_name] = value
      end
    else
      if columns.exist?(primary_name)
        if attributes.key?(primary_name)
          unless attributes[primary_name].is_a?(Hash)
            attributes[primary_name] = {
              "_key" => attributes[primary_name],
            }
          end
        else
          attributes[primary_name] = {}
        end
        attributes[primary_name][sub_name] = value
      else
        dynamic_attributes[name] = value
      end
    end
  end
  [attributes, dynamic_attributes]
end
build_records(raw_records) click to toggle source
# File lib/groonga_client_model/modelize.rb, line 39
def build_records(raw_records)
  columns = @model_class.columns
  raw_records.collect do |raw_record|
    attributes, dynamic_attributes = build_attributes(columns, raw_record)
    record = @model_class.new(attributes)
    record.assign_dynamic_attributes(dynamic_attributes)
    record
  end
end