Sha256: ca91b75ea66085c7e945a3653ef6a533aeaa3b9754c9b9966ac6d1375219f917

Contents?: true

Size: 1.63 KB

Versions: 20

Compression:

Stored size: 1.63 KB

Contents

module Caboose
  class ProductImage < ActiveRecord::Base
    self.table_name = 'store_product_images'
    
    belongs_to :product
    has_many :product_image_variants
    has_many :variants, :through => :product_image_variants
    
    
    attr_accessible :id,
      :product_id,
      :title,
      :position,
      :image_file_name,
      :image_content_type,
      :image_file_size,
      :image_updated_at,
      :square_offset_x,
      :square_offset_y,
      :square_scale_factor
      
    has_attached_file :image,
      :path        => "products/:product_id_:id_:style.:extension",
      :default_url => '/products/:id_:style.:extension',
      :s3_protocol => :https,
      :styles      => {
        tiny:   '100x100>',
        thumb:  '250x250>',
        medium: '400x400>',
        large:  '800x800>',
        huge:   '1200x1200>'
      }
    
    default_scope order('position ASC')
    
    validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png"]
    
    def process
      config = AssetSync.config
      bucket = config.fog_directory
      uri = "http://#{bucket}.s3.amazonaws.com/media-images/#{self.id}#{File.extname(self.title.downcase)}"
      self.image = URI.parse(uri)
      self.save
    end
    
    def url(size) # 'tiny', 'thumb', 'medium', 'large', 'huge'
      self.image.url(size)
    end
    
    def as_json(options={})
      self.attributes.merge({
        :urls => {
          :tiny => self.url(:tiny),
          :thumb => self.url(:thumb),
          :medium => self.url(:medium),
          :large => self.url(:large),
          :huge => self.url(:huge)
        }
      })
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
caboose-cms-0.5.21 app/models/caboose/product_image.rb
caboose-cms-0.5.20 app/models/caboose/product_image.rb
caboose-cms-0.5.19 app/models/caboose/product_image.rb
caboose-cms-0.5.17 app/models/caboose/product_image.rb
caboose-cms-0.5.16 app/models/caboose/product_image.rb
caboose-cms-0.5.15 app/models/caboose/product_image.rb
caboose-cms-0.5.14 app/models/caboose/product_image.rb
caboose-cms-0.5.13 app/models/caboose/product_image.rb
caboose-cms-0.5.12 app/models/caboose/product_image.rb
caboose-cms-0.5.11 app/models/caboose/product_image.rb
caboose-cms-0.5.10 app/models/caboose/product_image.rb
caboose-cms-0.5.9 app/models/caboose/product_image.rb
caboose-cms-0.5.8 app/models/caboose/product_image.rb
caboose-cms-0.5.7 app/models/caboose/product_image.rb
caboose-cms-0.5.6 app/models/caboose/product_image.rb
caboose-cms-0.5.5 app/models/caboose/product_image.rb
caboose-cms-0.5.4 app/models/caboose/product_image.rb
caboose-cms-0.5.3 app/models/caboose/product_image.rb
caboose-cms-0.5.2 app/models/caboose/product_image.rb
caboose-cms-0.5.1 app/models/caboose/product_image.rb