Class: ActiveRecord::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/ninja_model/rails_ext/active_record.rb

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ninja_model/rails_ext/active_record.rb', line 31

def method_missing(method, *args)
  begin
    super
  rescue NoMethodError => ex
    if self.class.read_inheritable_attribute(:ninja_proxy) && ninja_proxy.respond_to?(method)
      ninja_proxy.send(method, *args)
    else
      raise ex
    end
  end
end

Class Method Details

.has_one_with_ninja_model(association_id, options = {}) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/ninja_model/rails_ext/active_record.rb', line 6

def has_one_with_ninja_model(association_id, options = {})
  if NinjaModel.ninja_model?(options[:class_name] || association_id)
    ninja_proxy.handle_association(:has_one, association_id, options)
  else
    has_one_without_ninja_model(association_id, options)
  end
end

.ninja_proxyObject



25
26
27
# File 'lib/ninja_model/rails_ext/active_record.rb', line 25

def ninja_proxy
  read_inheritable_attribute(:ninja_proxy) || write_inheritable_attribute(:ninja_proxy, NinjaModel::Associations::NinjaModelProxy.new(self))
end

.reflect_on_association_with_ninja_model(association) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/ninja_model/rails_ext/active_record.rb', line 15

def reflect_on_association_with_ninja_model(association)
  if read_inheritable_attribute(:ninja_proxy) && ninja_proxy.proxy_klass.reflections.include?(association)
    ninja_proxy.proxy_klass.reflect_on_association(association)
  else
    reflect_on_association_without_ninja_model(association)
  end
end