Sha256: 1d86cca2a12905d97ddf63b896a8718ab66797d800ca2771c38381876beaf260

Contents?: true

Size: 1.67 KB

Versions: 52

Compression:

Stored size: 1.67 KB

Contents

require 'spec_helper'
require 'active_model'

# --------------------------------------------------------------- #
# MODELS
# --------------------------------------------------------------- #
class MyModel
  
  # Callbacks
  extend ActiveModel::Callbacks
  define_model_callbacks :save, :destroy
  
  include ActiveModel::Validations
  include ActiveModel::Dirty
  
  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_blah_blah,
    :other_image_uid,
    :yet_another_image_uid,
    :otra_imagen_uid,
    :trailer_video_uid,
    :created_at,
    :updated_at
  ]
  define_attribute_methods ATTRIBUTES
  attr_accessor *ATTRIBUTES
end

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

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

Version data entries

52 entries across 52 versions & 2 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.7.4 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.7.3 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.7.2 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.7.1 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.7.0 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
dragonfly-0.9.15 spec/dragonfly/active_model_extensions/spec_helper.rb
dragonfly-0.9.14 spec/dragonfly/active_model_extensions/spec_helper.rb
dragonfly-0.9.13 spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.9 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.8 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.7 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.6 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.5 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.4 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.3 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.2 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.1 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.6.0 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb
classiccms-0.5.17 vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb