Sha256: 3a775dd38c8fdc9ad7a597f0e4af0e58414db84af7899e8e197d02fe6d47438b
Contents?: true
Size: 1.6 KB
Versions: 4
Compression:
Stored size: 1.6 KB
Contents
module Dragonfly module ActiveModelExtensions module ClassMethods include Validations 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_dragonfly_attachments unless respond_to?(:before_save_callback_chain) && before_save_callback_chain.find(:save_dragonfly_attachments) before_destroy :destroy_dragonfly_attachments unless respond_to?(:before_destroy_callback_chain) && before_destroy_callback_chain.find(:destroy_dragonfly_attachments) # Register the new attribute dragonfly_apps_for_attributes[attribute] = app # Define the setter for the attribute define_method "#{attribute}=" do |value| dragonfly_attachments[attribute].assign(value) end # Define the getter for the attribute define_method attribute do dragonfly_attachments[attribute].to_value end end end app end 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 end end end
Version data entries
4 entries across 4 versions & 1 rubygems