module Utusemi::Core::ActiveRecord::Base

Public Class Methods

new(*args, &block) click to toggle source

用途

utusemiメソッドを利用後にレコードを作成した場合は
Utusemi::Core#utusemiを個別呼び出さなくても済むようになる

使用例

product = Product.utusemi(:product).new(name: 'test')
product.name
#=> 'test' (= products.title)
Calls superclass method
# File lib/utusemi/core.rb, line 289
def initialize(*args, &block)
  case Rails::VERSION::MAJOR
  when 4
    current_scope = self.class.current_scope
  when 3
    current_scope = self.class.scoped
  end
  utusemi_values = current_scope.try(:utusemi_values) || {}
  utusemi_values = self.class.utusemi_values unless utusemi_values[:flag]
  utusemi!(utusemi_values[:type], utusemi_values[:options]) if utusemi_values[:flag]
  super
end

Public Instance Methods

association(name) click to toggle source

用途

association_cacheの影響でAssociation#ownerでclone前のインスタンスしか取得できないため
別経路から実際の呼び出し元インスタンスを参照できるようにし、utusemi_valuesを取り出せるようにする
Calls superclass method
# File lib/utusemi/core.rb, line 313
def association(name)
  truthly_owner = self
  association = super
  association.singleton_class.send(:define_method, :truthly_owner) { truthly_owner }
  association
end
initialize_copy(original_obj) click to toggle source

用途

cloneでは浅いコピーしか行われず@utusemi_valuesの内容が
書き変わってしまうので、これを解決するために@utusemi_valuesもdupする
Calls superclass method
# File lib/utusemi/core.rb, line 305
def initialize_copy(original_obj)
  @utusemi_values = original_obj.utusemi_values.dup
  super
end