lib/artdeco.rb in artdeco-1.2.1 vs lib/artdeco.rb in artdeco-1.3.0
- old
+ new
@@ -18,10 +18,20 @@
end
private
def default_decorator_class model
@_decorator_classes_cache ||= {}
- [@_decorator_classes_cache.fetch(model.class){"::#{model.class}Decorator".constantize rescue nil}].compact
+ [@_decorator_classes_cache.fetch(model.class){decorator_class_for model}].compact
+ end
+
+ def decorator_class_for model
+ clazz = model.class
+ while clazz != Object
+ result = ("::#{clazz}Decorator".constantize rescue nil)
+ return result if result
+ clazz = clazz.superclass
+ end
+ nil
end
end
module ClassMethods