Module: CustomFields::Types::File::Target::ClassMethods

Defined in:
lib/custom_fields/types/file.rb

Instance Method Summary collapse

Instance Method Details

#apply_file_custom_field(klass, rule) ⇒ Object

Adds a file field (using carrierwave)

Parameters:

  • klass (Class)

    The class to modify

  • rule (Hash)

    It contains the name of the field and if it is required or not



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/custom_fields/types/file.rb', line 20

def apply_file_custom_field(klass, rule)
  name = rule['name']

  klass.mount_uploader name, FileUploader

  if rule['localized'] == true
    klass.replace_field name, ::String, true
  end

  if rule['required']
    klass.validates_presence_of name
  end
end

#file_attribute_get(instance, name) ⇒ Hash

Build a hash storing the url for a file custom field of an instance.

Parameters:

  • instance (Object)

    An instance of the class enhanced by the custom_fields

  • name (String)

    The name of the file custom field

Returns:

  • (Hash)

    field name => url or empty hash if no file



41
42
43
44
45
46
47
48
# File 'lib/custom_fields/types/file.rb', line 41

def file_attribute_get(instance, name)
  if instance.send(:"#{name}?") #"
    value = instance.send(name.to_sym).url
    { name => value, "#{name}_url" => value }
  else
    {}
  end
end

#file_attribute_set(instance, name, attributes) ⇒ Object

Set the value for the instance and the file field specified by the 2 params.

Parameters:

  • instance (Object)

    An instance of the class enhanced by the custom_fields

  • name (String)

    The name of the file custom field

  • attributes (Hash)

    The attributes used to fetch the values



57
58
59
60
61
# File 'lib/custom_fields/types/file.rb', line 57

def file_attribute_set(instance, name, attributes)
  [name, "remote_#{name}_url", "remove_#{name}"].each do |_name|
    self.default_attribute_set(instance, _name, attributes)
  end.compact
end