lib/active_ldap/callbacks.rb in activeldap-0.9.0 vs lib/active_ldap/callbacks.rb in activeldap-0.10.0
- old
+ new
@@ -6,14 +6,47 @@
super
base.class_eval do
include ActiveRecord::Callbacks
+ unless respond_to?(:instantiate_with_callbacks)
+ extend ClassMethods
+ class << self
+ alias_method_chain :instantiate, :callbacks
+ end
+ alias_method_chain :initialize, :callbacks
+ end
+
def callback(method)
super
rescue ActiveRecord::ActiveRecordError
raise Error, $!.message
end
end
+ end
+
+ module ClassMethods
+ def instantiate_with_callbacks(record)
+ object = instantiate_without_callbacks(record)
+
+ if object.respond_to_without_attributes?(:after_find)
+ object.send(:callback, :after_find)
+ end
+
+ if object.respond_to_without_attributes?(:after_initialize)
+ object.send(:callback, :after_initialize)
+ end
+
+ object
+ end
+ end
+
+ def initialize_with_callbacks(attributes = nil) #:nodoc:
+ initialize_without_callbacks(attributes)
+ result = yield self if block_given?
+ if respond_to_without_attributes?(:after_initialize)
+ callback(:after_initialize)
+ end
+ result
end
end
end