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