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