CarrierWave:获取附件所有者实例对象

时间:2014-08-26 07:52:22

标签: ruby-on-rails ruby carrierwave

如何在Rails中获取调用对象?

我有一个零件模型,其中零件具有CarrierWave附件图像和名为prime_pn的额外列。 我需要根据prime_pn中的某些条件获取部件的图像网址。

class Part < ActiveRecord::Base
    self.table_name = "parts"
    mount_uploader :image_name, ImageNameUploader
end

我有一个名为ImageNameUploader的类,如下所示:

class ImageNameUploader < CarrierWave::Uploader::Base

    include CarrierWave::RMagick
    storage :file

    def store_dir       
     "#{APP_CONFIG['part_image_path']}/#{model.id}"
    end

   def url
    puts __getobj__
   end

   process :resize_to_fit => [800, 800]    

  version :thumb do      
    process :resize_to_limit => [50, 50]
  end

  version :small do      
    process :resize_to_limit => [100, 100]
  end

 def extension_white_list
   %w(jpg jpeg gif png)
 end

end

url的{​​{1}}方法中,我需要获取附件所有者,例如:

ImageNameUploader

我需要Part.find(1).image_name_url #=> "/apps/rails/portal/images/10010/rio.jpg" 方法中的Part Object,我如何获得它。

先谢谢。

1 个答案:

答案 0 :(得分:-1)

来自CarrierWave自述文件:

  

模型变量指向上传者的实例对象   附于。

因此model.prime_pn应该获得您所需的数据:

class ImageNameUploader < CarrierWave::Uploader::Base
  def url
    prime_pn = model.prime_pn
    # do what ever with it
  end
end