Module: Dragonfly::ActiveModelExtensions::ClassMethods
- Defined in:
- lib/dragonfly/active_model_extensions/class_methods.rb
Instance Method Summary collapse
Instance Method Details
#dragonfly_apps_for_attributes ⇒ Object
36 37 38 39 40 41 |
# File 'lib/dragonfly/active_model_extensions/class_methods.rb', line 36 def dragonfly_apps_for_attributes @dragonfly_apps_for_attributes ||= begin parent_class = ancestors.select{|a| a.is_a?(Class) }[1] parent_class.respond_to?(:dragonfly_apps_for_attributes) ? parent_class.dragonfly_apps_for_attributes.dup : {} end end |
#register_dragonfly_app(macro_name, app) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/dragonfly/active_model_extensions/class_methods.rb', line 7 def register_dragonfly_app(macro_name, app) (class << self; self; end).class_eval do # Defines e.g. 'image_accessor' for any activerecord class body define_method macro_name do |attribute| # Prior to activerecord 3, adding before callbacks more than once does add it more than once before_save :save_attachments unless respond_to?(:before_save_callback_chain) && before_save_callback_chain.find(:save_attachments) before_destroy :destroy_attachments unless respond_to?(:before_destroy_callback_chain) && before_destroy_callback_chain.find(:destroy_attachments) # Register the new attribute dragonfly_apps_for_attributes[attribute] = app # Define the setter for the attribute define_method "#{attribute}=" do |value| [attribute].assign(value) end # Define the getter for the attribute define_method attribute do [attribute].to_value end end end app end |