Sha256: 03250f1a7a12b7e74b3e5d5093b1a58aa88bb908b6eafd53ba4340fc138b3b5c

Contents?: true

Size: 885 Bytes

Versions: 1

Compression:

Stored size: 885 Bytes

Contents

module BannerLite
  class Banner < ActiveRecord::Base
    attr_accessor :file
    validates :url
    validates :file, if: ->(b){ b.file_name.blank? }

    before_save :fill_file_name, if: :file
    after_save :save_file, if: :file
    after_destroy :remove_file

    scope :active, ->{ now = Time.zone.now; where(arel_table[:active_from].lteq(now).and(arel_table[:active_until].gt(now))) }

    def src
      "/system/#{id}/#{file_name}"
    end

    private
      def base_dir
        @base_dir ||= Rails.root.join('public', 'system', id.to_s)
      end

      def fill_file_name
        self.file_name = file.original_filename
      end

      def remove_file
        FileUtils.rm_rf(base_dir)
      end

      def save_file
        FileUtils.mkdir(base_dir) unless File.directory?(base_dir)
        File.open(base_dir + file_name, 'wb'){|f| f.write(file.read) }
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
banner_lite-0.0.2 app/models/banner_lite/banner.rb