Module: SimpleFileUploader::ActiveRecord

Defined in:
lib/simple_file_uploader/active_record.rb

Instance Method Summary collapse

Instance Method Details

#mount_simple_uploader(column, uploader, options = {}) ⇒ Object

Input Params:



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/simple_file_uploader/active_record.rb', line 15

def mount_simple_uploader(column, uploader, options = {})

  uploader.remember_uploader(self, column)
  uploaders[column.to_sym] = uploader
  uploader_options[column.to_sym] = options

  alias_method :read_uploader, :read_attribute
  alias_method :write_uploader, :write_attribute
  public :read_uploader
  public :write_uploader

  before_save{ _uploaders(column).write_identifier! }
  after_create { _uploaders(column).on_create }
  after_destroy { _uploaders(column).on_destroy }
  after_update{ _uploaders(column).on_update(changes[column].first) if changes[column] }

  validate do |obj|
    obj.send(column).errors.each { |error| errors.add(column, error) }
  end

  define_method :"#{column}=" do |value|
    _uploaders(column).column_value = value
  end

  define_method :"#{column}" do
    _uploaders(column)
  end

  define_method :"remove_#{column}!" do
    _uploaders(column).remove
    save!
  end

  define_method :_uploaders do |column|
    @_simple_mounter_instances ||= {}
    @_simple_mounter_instances[column] ||= self.class.uploaders[column].new(self, column)
  end

end

#uploader_optionsObject



8
9
10
# File 'lib/simple_file_uploader/active_record.rb', line 8

def uploader_options
  @uploader_options ||= superclass.respond_to?(:uploader_options) ? superclass.uploader_options.dup : {}
end

#uploadersObject



4
5
6
# File 'lib/simple_file_uploader/active_record.rb', line 4

def uploaders
  @uploaders ||= superclass.respond_to?(:uploaders) ? superclass.uploaders.dup : {}
end