rails missingrequiredvalidatorerror game errors ruby-on-rails paperclip

ruby on rails - missingrequiredvalidatorerror - Obtención del ancho y alto de la imagen en el modelo en el Ruby Paperclip GEM



paperclip s3 (2)

Ahh, lo descubrí. Solo necesitaba hacer un proc.

Aquí está el código de mi modelo:

class Submission < ActiveRecord::Base #### Start Paperclip #### has_attached_file :photo, :styles => { :original => "634x471>", :thumb => Proc.new { |instance| instance.resize } }, :storage => :s3, :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", :path => ":attachment/:id/:style.:extension", :bucket => ''foo_bucket'' #### End Paperclip #### def resize geo = Paperclip::Geometry.from_file(photo.to_file(:original)) ratio = geo.width/geo.height min_width = 142 min_height = 119 if ratio > 1 # Horizontal Image final_height = min_height final_width = final_height * ratio "#{final_width.round}x#{final_height.round}!" else # Vertical Image final_width = min_width final_height = final_width * ratio "#{final_height.round}x#{final_width.round}!" end end end

Intentando obtener el ancho y el alto de la imagen cargada mientras se encuentra en el modelo en el guardado inicial.

Alguna forma de hacer esto?

Aquí está el fragmento de código que he estado probando con mi modelo. Por supuesto que falla en "instance.photo_width".

has_attached_file :photo, :styles => { :original => "634x471>", :thumb => Proc.new { |instance| ratio = instance.photo_width/instance.photo_height min_width = 142 min_height = 119 if ratio > 1 final_height = min_height final_width = final_height * ratio else final_width = min_width final_height = final_width * ratio end "#{final_width}x#{final_height}" } }, :storage => :s3, :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", :path => ":attachment/:id/:style.:extension", :bucket => ''foo_bucket''

Así que básicamente estoy tratando de hacer esto para obtener un ancho y una altura personalizados de las miniaturas en función de las dimensiones iniciales de la imagen.

¿Algunas ideas?


class Asset include Mongoid::Paperclip before_save :extract_dimensions field :width, type: Integer field :height, type: Integer has_mongoid_attached_file :data def extract_dimensions return unless is_image? tempfile = data.queued_for_write[:original] unless tempfile.nil? geometry = Paperclip::Geometry.from_file(tempfile) self.width = geometry.width.to_i self.height = geometry.height.to_i end true # wont save if false end def is_image? data_content_type =~ %r{^(image|(x-)?application)/(bmp|gif|jpeg|jpg|pjpeg|png|x-png)$} end end