Sha256: 78e477ca909a3f32697e6bef698f8052913e26e342f2a0a35892a36f6537b5a8

Contents?: true

Size: 1.69 KB

Versions: 16

Compression:

Stored size: 1.69 KB

Contents

# --------------------------------------------------------------- #
# MODELS
# --------------------------------------------------------------- #
class MyModel
  
  # Callbacks
  extend ActiveModel::Callbacks
  define_model_callbacks :save, :destroy
  
  include ActiveModel::Validations
  
  class << self
    def create!(attrs={})
      new(attrs).save!
    end
    
    def find(id)
      new(instances[id])
    end
    
    def instances
      @instances ||= {}
    end
  end

  def initialize(attrs={})
    attrs.each do |key, value|
      send("#{key}=", value)
    end
  end
  
  attr_accessor :id
  
  def to_hash
    self.class::ATTRIBUTES.inject({}) do |hash, attr|
      hash[attr] = send(attr)
      hash
    end
  end
  
  def save
    _run_save_callbacks {
      self.id ||= rand(1000)
      self.class.instances[id] = self.to_hash
    }
  end
  def save!
    save
    self
  end
  
  def destroy
    _run_destroy_callbacks {}
  end
end

class Item < MyModel
  
  ATTRIBUTES = [
    :title,
    :preview_image_uid,
    :preview_image_some_analyser_method,
    :preview_image_size,
    :preview_image_name,
    :preview_image_ext,
    :preview_image_blah_blah,
    :other_image_uid,
    :yet_another_image_uid,
    :otra_imagen_uid,
    :trailer_video_uid,
    :created_at,
    :updated_at
  ]
  attr_accessor *ATTRIBUTES
end

class Car < MyModel
  ATTRIBUTES = [
    :image_uid,
    :reliant_image_uid,
    :type
  ]
  attr_accessor *ATTRIBUTES
end

class Photo < MyModel
  ATTRIBUTES = [:image_uid]
  attr_accessor *ATTRIBUTES
end


# --------------------------------------------------------------- #
# HELPER METHODS
# --------------------------------------------------------------- #
def model_class
  MyModel
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
dragonfly-0.8.6 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.8.5 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.8.4 spec/dragonfly/active_model_extensions/active_model_setup.rb
fog-dragonfly-0.8.2 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.8.2 spec/dragonfly/active_model_extensions/active_model_setup.rb
fog-dragonfly-0.8.1 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.8.1 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.8.0 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.7 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.6 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.5 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.4 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.3 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.2 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.1 spec/dragonfly/active_model_extensions/active_model_setup.rb
dragonfly-0.7.0 spec/dragonfly/active_model_extensions/active_model_setup.rb