Class: NinjaModel::Associations::ActiveRecordProxy
- Inherits:
-
Object
- Object
- NinjaModel::Associations::ActiveRecordProxy
- Defined in:
- lib/ninja_model/rails_ext/active_record.rb
Instance Method Summary collapse
- #handle_association(macro, association_id, options) ⇒ Object
-
#initialize(ninja_model) ⇒ ActiveRecordProxy
constructor
A new instance of ActiveRecordProxy.
- #instance(obj) ⇒ Object
Constructor Details
#initialize(ninja_model) ⇒ ActiveRecordProxy
Returns a new instance of ActiveRecordProxy.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/ninja_model/rails_ext/active_record.rb', line 103 def initialize(ninja_model) @klass = ninja_model @klass.class_eval do def proxy @proxy ||= begin self.class.proxy.instance(self) end @proxy.attributes = self.attributes #.delete_if { |k,v| k.eql?('id') } @proxy.id = self.id @proxy end end @proxy_klass = ninja_model.parent.const_set("#{@klass.model_name.gsub(/[^a-zA-Z]/, '')}Proxy", Class.new(ActiveRecord::Base)) @proxy_klass.class_eval do cattr_accessor :columns self.columns = [] def self.column(name, sql_type = nil, default = nil) self.columns << ActiveRecord::ConnectionAdapters::Column.new(name, nil, sql_type.to_s, default) end end @klass.model_attributes.each do |attr| @proxy_klass.send :column, attr.name, attr.type, attr.default end end |
Instance Method Details
#handle_association(macro, association_id, options) ⇒ Object
136 137 138 139 140 141 142 143 |
# File 'lib/ninja_model/rails_ext/active_record.rb', line 136 def handle_association(macro, association_id, ) unless macro.eql?(:belongs_to) = {:foreign_key => derive_foreign_key}.merge() end @proxy = nil @proxy_klass.send macro, association_id, end |
#instance(obj) ⇒ Object
130 131 132 133 134 |
# File 'lib/ninja_model/rails_ext/active_record.rb', line 130 def instance(obj) proxy = @proxy_klass.new proxy.send :init_with, {'attributes' => obj.attributes} proxy end |