0
- SPECIAL_MEMBERS = %w(attributes associations connection
)
0
+ SPECIAL_MEMBERS = %w(attributes associations connection
callbacks)
0
DEFAULT_ATTRIBUTES = %w(id rev)
0
def initialize(params = {})
0
# Object instance variable
0
- @attributes, @associations, @connection, klass_atts, klass_assocs = {}, {}, self.class.connection, self.class.attributes, self.class.associations
0
+ @attributes = {}; @associations = {}; @callbacks = Hash.new; @connection = self.class.connection
0
+ klass_atts = self.class.attributes; klass_assocs = self.class.associations; klass_callbacks = self.class.callbacks
0
# ActiveCouch::Connection object will be readable in every
0
# object instantiated from a subclass of ActiveCouch::Base
0
SPECIAL_MEMBERS.each do |k|
0
@@ -18,11 +19,6 @@ module ActiveCouch
0
self.instance_eval "def #{k}=(val); attributes[:#{k}].value = val; end"
0
- DEFAULT_ATTRIBUTES.each do |x|
0
- self.instance_eval "def #{x}; _#{x}; end"
0
- self.instance_eval "def #{x}=(val); self._#{x}=(val); end"
0
klass_assocs.each_key do |k|
0
@associations[k] = HasManyAssociation.new(klass_assocs[k].name, :class => klass_assocs[k].klass)
0
self.instance_eval "def #{k}; associations[:#{k}].container; end"
0
@@ -30,6 +26,16 @@ module ActiveCouch
0
self.instance_eval "def add_#{Inflector.singularize(k)}(val); associations[:#{k}].push(val); end"
0
+ klass_callbacks.each_key do |k|
0
+ @callbacks[k] = klass_callbacks[k].dup
0
+ DEFAULT_ATTRIBUTES.each do |x|
0
+ self.instance_eval "def #{x}; _#{x}; end"
0
+ self.instance_eval "def #{x}=(val); self._#{x}=(val); end"
0
# Set any instance variables if any, which are present in the params hash
0
@@ -357,10 +363,15 @@ module ActiveCouch
0
def inherited(subklass)
0
+ subklass.class_eval do
0
+ include ActiveCouch::Callbacks
0
# TODO: Need a cleaner way to do this
0
subklass.instance_variable_set "@attributes", { :_id => Attribute.new(:_id, :with_default_value => nil),
0
:_rev => Attribute.new(:_rev, :with_default_value => nil) }
0
subklass.instance_variable_set "@associations", {}
0
+ subklass.instance_variable_set "@callbacks", Hash.new([])
0
subklass.instance_variable_set "@connections", nil
0
SPECIAL_MEMBERS.each do |k|
Comments
No one has commented yet.