module Model::ClassMethods
Public Instance Methods
define_field_media_file( name, opts = {} )
click to toggle source
# File lib/aerogel/media/model.rb, line 8 def define_field_media_file( name, opts = {} ) opts = { # defaults app: :file }.deep_merge opts unless self.respond_to? :dragonfly_accessor extend Dragonfly::Model extend Dragonfly::Model::Validations end type = opts[:type] define_field_mongoid name, type: type define_method "#{name}_uid" do type.new( self[name] ).uid end define_method "#{name}_uid=" do |value| self[name] = ( type.new( self[name] ).tap {|f| f.uid = value } ).mongoize value end define_method "#{name}_name" do type.new( self[name] ).name end define_method "#{name}_name=" do |value| self[name] = ( type.new( self[name] ).tap {|f| f.name = value } ).mongoize value end dragonfly_accessor name, app: opts[:app] alias_method :"dragonfly_accessor_#{name}=", :"#{name}=" define_method "#{name}=" do |value| if Hash === value && value.key?(:tempfile) && value.key?( :filename ) self.send :"dragonfly_accessor_#{name}=", Aerogel::Media::UploadedFile.new( value ) else self.send :"dragonfly_accessor_#{name}=", value end end end
define_field_media_image( name, opts = {} )
click to toggle source
# File lib/aerogel/media/model.rb, line 53 def define_field_media_image( name, opts = {} ) define_field_media_file name, { app: :image }.merge(opts) validates_property :mime_type, of: name, in: Media::Image::MIME_TYPES, message: :not_an_image end