Module: Utusemi::Core::ActiveRecord::Base
- Defined in:
- lib/utusemi/core.rb,
lib/utusemi/core.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#association(name) ⇒ Object
用途 association_cacheの影響でAssociation#ownerでclone前のインスタンスしか取得できないため 別経路から実際の呼び出し元インスタンスを参照できるようにし、utusemi_valuesを取り出せるようにする.
-
#initialize(*args, &block) ⇒ Object
用途 utusemiメソッドを利用後にレコードを作成した場合は Utusemi::Core#utusemiを個別呼び出さなくても済むようになる.
-
#initialize_copy(original_obj) ⇒ Object
用途 cloneでは浅いコピーしか行われず@utusemi_valuesの内容が 書き変わってしまうので、これを解決するために@utusemi_valuesもdupする.
Instance Method Details
#association(name) ⇒ Object
用途
association_cache
317 318 319 320 321 322 |
# File 'lib/utusemi/core.rb', line 317 def association(name) truthly_owner = self association = super association.singleton_class.send(:define_method, :truthly_owner) { truthly_owner } association end |
#initialize(*args, &block) ⇒ Object
用途
utusemi
使用例
product = Product.utusemi(:product).new(name: 'test')
product.name
#=> 'test' (= products.title)
293 294 295 296 297 298 299 300 301 302 303 304 |
# File 'lib/utusemi/core.rb', line 293 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 |
#initialize_copy(original_obj) ⇒ Object
用途
clone
309 310 311 312 |
# File 'lib/utusemi/core.rb', line 309 def initialize_copy(original_obj) @utusemi_values = original_obj.utusemi_values.dup super end |