Sha256: e558ca8b900582c9ec4d5ebc9c7bea875f6b26292a05e16581c46b0a2a106a5b
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
module Model define_field_type Media::File, :define_field_media_file define_field_type Media::Image, :define_field_media_image module ClassMethods 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 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 end # module ClassMethods end # module Model
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
aerogel-media-1.4.0 | lib/aerogel/media/model.rb |