Class: NinjaModel::Associations::NinjaModelProxy

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(active_record) ⇒ NinjaModelProxy



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/ninja_model/rails_ext/active_record.rb', line 154

def initialize(active_record)
  @klass = active_record
  @klass.class_eval do
    def ninja_proxy
      @ninja_proxy ||= begin
        self.class.ninja_proxy.instance(self)
      end
      @ninja_proxy.attributes = self.attributes.delete_if { |k,v| k.eql?('id') }
      @ninja_proxy
    end
  end

  @proxy_klass = active_record.parent.const_set("#{@klass.model_name}Proxy", Class.new(NinjaModel::Base))

  @klass.columns_hash.each_pair do |k,v|
    @proxy_klass.send :attribute, k, v.type, v.default, @proxy_klass
  end
end

Instance Attribute Details

#proxy_klassObject (readonly)

Returns the value of attribute proxy_klass.



153
154
155
# File 'lib/ninja_model/rails_ext/active_record.rb', line 153

def proxy_klass
  @proxy_klass
end

Instance Method Details

#handle_association(macro, association_id, options) ⇒ Object



179
180
181
182
183
184
185
186
# File 'lib/ninja_model/rails_ext/active_record.rb', line 179

def handle_association(macro, association_id, options)
  unless macro.eql?(:belongs_to)
    options = {:foreign_key => derive_foreign_key}.merge(options)
  end

  @proxy = nil
  @proxy_klass.send macro, association_id, options
end

#instance(obj) ⇒ Object



173
174
175
176
177
# File 'lib/ninja_model/rails_ext/active_record.rb', line 173

def instance(obj)
  proxy = @proxy_klass.new
  proxy.send :instantiate, {'attributes' => obj.attributes}
  proxy
end