module Utusemi::Core::InstanceMethods

用途

Utusemi.config.mapに設定したマッピングを意識せずに実装できるよう、
デフォルト名による各カラムへのアクセスを可能にする

使用例

Utusemi.config do
  map :product do
    name :title
  end
end

product = Product.first
product.name
#=> NoMethodError: undefined method `name' for #<Product:...>

product.utusemi(:product).name
#=> 'test product'

Public Instance Methods

changed() click to toggle source
Calls superclass method
# File lib/utusemi/core.rb, line 110
def changed
  return super unless utusemi_values[:flag]
  super + super.map { |column_name| unmapped_utusemi_column_name(column_name).to_s }
end
utusemi!(obj = nil, options = {}) click to toggle source
Calls superclass method Utusemi::Core::Base#utusemi!
# File lib/utusemi/core.rb, line 106
def utusemi!(obj = nil, options = {})
  super.tap { utusemi_columns_mapper if obj.class.in? [Symbol, String] }
end

Private Instance Methods

define_getter_method(column_name, origin_column_name) click to toggle source
# File lib/utusemi/core.rb, line 128
def define_getter_method(column_name, origin_column_name)
  define_singleton_method(column_name) { send origin_column_name }
end
define_predicate_method(column_name, origin_column_name) click to toggle source
# File lib/utusemi/core.rb, line 136
def define_predicate_method(column_name, origin_column_name)
  define_singleton_method("#{column_name}?") { send "#{origin_column_name}?" }
end
define_setter_method(column_name, origin_column_name) click to toggle source
# File lib/utusemi/core.rb, line 132
def define_setter_method(column_name, origin_column_name)
  define_singleton_method("#{column_name}=") { |value| send "#{origin_column_name}=", value }
end
define_was_method(column_name, origin_column_name) click to toggle source
# File lib/utusemi/core.rb, line 140
def define_was_method(column_name, origin_column_name)
  define_singleton_method("#{column_name}_was") { send "#{origin_column_name}_was" }
end
utusemi_columns_mapper() click to toggle source
# File lib/utusemi/core.rb, line 117
def utusemi_columns_mapper
  utusemi_column_names.each_pair do |new_column_name, origin_column_name|
    next if new_column_name == origin_column_name
    # alias_attributeと同じことを、対象カラム名を動的に変更して行う
    define_getter_method(new_column_name, origin_column_name)
    define_setter_method(new_column_name, origin_column_name)
    define_predicate_method(new_column_name, origin_column_name)
    define_was_method(new_column_name, origin_column_name)
  end
end
utusemi_for_association(name, association, options = {}) click to toggle source
# File lib/utusemi/core.rb, line 144
def utusemi_for_association(name, association, options = {})
  utusemi_values = self.utusemi_values
  utusemi_values = self.class.utusemi_values unless utusemi_values[:flag]
  utusemi_flag = utusemi_values[:flag] || options[:force]
  return association unless utusemi_flag
  association.utusemi!(name.to_s.singularize, utusemi_values[:options])
end