module Utusemi::Core::Base
用途
モデル向けカラムマッパとインスタンス向けカラムマッパの共通処理
役割
モデル向けカラムマッパ => Utusemi::Core::ActiveRecord インスタンス向けカラムマッパ => Utusemi::Core::InstanceMethods
備考
utusemiメソッドの第2引数は、任意のオプションをHashで指定する。 ただしoptions[:times]は予約済みで、指定した回数分だけmapメソッドを 繰り返し、options[:index]にイテレート中のカウントを返す。 また、その結果から複数のwhere条件を構築する。
Public Instance Methods
utusemi(obj = nil, options = {})
click to toggle source
# File lib/utusemi/core.rb, line 23 def utusemi(obj = nil, options = {}) clone.utusemi!(obj, options) end
utusemi!(obj = nil, options = {})
click to toggle source
# File lib/utusemi/core.rb, line 27 def utusemi!(obj = nil, options = {}) obj = true if obj.nil? @utusemi_values ||= {} @utusemi_values[:flag] = obj ? true : false @utusemi_values[:type] = obj.to_sym if obj.class.in? [Symbol, String] @utusemi_values[:type] ||= default_utusemi_type @utusemi_values[:options] = options warning_checker unless Rails.env.production? self end
utusemi_values()
click to toggle source
# File lib/utusemi/core.rb, line 17 def utusemi_values utusemi_values = @utusemi_values || {} utusemi_values = klass_utusemi_values unless utusemi_values[:flag] utusemi_values end
Private Instance Methods
class_for_default_utusemi_type()
click to toggle source
# File lib/utusemi/core.rb, line 66 def class_for_default_utusemi_type case self when ActiveRecord::Relation @klass when ActiveRecord::Base self.class else self end end
default_utusemi_type()
click to toggle source
# File lib/utusemi/core.rb, line 62 def default_utusemi_type class_for_default_utusemi_type.model_name.singular.to_sym end
klass_utusemi_values()
click to toggle source
# File lib/utusemi/core.rb, line 77 def klass_utusemi_values return {} unless @klass utusemi_values = @klass.instance_variable_get(:@utusemi_values) || {} return {} unless utusemi_values[:flag] utusemi_values end
mapped_utusemi_column_name(column_name, index = nil)
click to toggle source
# File lib/utusemi/core.rb, line 47 def mapped_utusemi_column_name(column_name, index = nil) utusemi_column_names(index)[column_name.to_sym] || column_name end
unmapped_utusemi_column_name(column_name, index = nil)
click to toggle source
# File lib/utusemi/core.rb, line 51 def unmapped_utusemi_column_name(column_name, index = nil) utusemi_column_names(index).invert[column_name.to_sym] || column_name end
utusemi_column_names(index = nil)
click to toggle source
# File lib/utusemi/core.rb, line 40 def utusemi_column_names(index = nil) return {} unless utusemi_values[:flag] options = utusemi_values[:options] || {} options.update(index: index) Utusemi.config.map(utusemi_values[:type], options).attributes end
warning_checker()
click to toggle source
# File lib/utusemi/core.rb, line 55 def warning_checker utusemi_column_names.each do |new_column_name, origin_column_name| return if new_column_name != origin_column_name Rails.logger.warn "[Utusemi:WARNING] \"#{new_column_name}\" is duplicated in map(:#{utusemi_values[:type]})." end end