module CustomFields::Types::File::Target::ClassMethods
Public Instance Methods
apply_file_custom_field(klass, rule)
click to toggle source
Adds a file field (using carrierwave)
@param [ Class ] klass The class to modify @param [ Hash ] rule It contains the name of the field and if it is required or not
# File lib/custom_fields/types/file.rb, line 17 def apply_file_custom_field(klass, rule) name = rule['name'] klass.mount_uploader name, FileUploader klass.field :"#{name}_size", type: ::Hash, default: {} klass.replace_field name, ::String, true if rule['localized'] == true return unless rule['required'] # FIXME: previously, we called "klass.validates_presence_of name" # but it didn't work well with localized fields. klass.validate do |object| UploaderPresenceValidator.new(object, name).validate end end
file_attribute_get(instance, name)
click to toggle source
Build a hash storing the url for a file custom field of an instance.
@param [ Object ] instance An instance of the class enhanced by the custom_fields @param [ String
] name The name of the file custom field
@return [ Hash ] field name => url or empty hash if no file
# 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)
click to toggle source
Set the value for the instance and the file field specified by the 2 params.
@param [ Object ] instance An instance of the class enhanced by the custom_fields @param [ String
] name The name of the file custom field @param [ Hash ] attributes The attributes used to fetch the values
# 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| default_attribute_set(instance, _name, attributes) end.compact end