Rails回形针如何创建多个图像上传和路径?

时间:2011-12-04 23:12:29

标签: ruby-on-rails ruby ruby-on-rails-3 paperclip

我为公司模型上传了一张图片,但它只适用于1张图片。 现在我想要照片模型处理两个不同的图像。

我的公司型号:

class Virksomhed < ActiveRecord::Base
has_one :photo, :dependent => :destroy
end

我的照片模特:

require 'open-uri'

    class Photo < ActiveRecord::Base
      belongs_to :virksomhed
      attr_accessor :image_url

      has_attached_file :image,
              :styles => { :small => "150x150>" },
                      :url  => "/images/:style/:id/:basename.:extension",
                      :path => ":rails_root/public/images/:style/:id/:basename.:extension"

    before_validation :download_remote_image, :if => :image_url_provided?

    private

      def image_url_provided?
        !self.image_url.blank?
      end

      def download_remote_image
        self.image = do_download_remote_image
        self.image_remote_url = image_url
      end

      def do_download_remote_image
        io = open(URI.parse(image_url))
        def io.original_filename; base_uri.path.split('/').last; end
        io.original_filename.blank? ? nil : io
      rescue # catch url errors with validations instead of exceptions (Errno::ENOENT, OpenURI::HTTPError, etc...)
      end

    end

我该怎么办?

  1. 创建一个像“Photo2模型”这样的新图像模型,并复制并粘贴照片模型中的代码?
  2. 或更改关联,以便公司有很多照片。然后我就不知道应该如何跟踪2个不同的图像以及路由应该如何。

1 个答案:

答案 0 :(得分:0)

class Virksomhed < ActiveRecord::Base
  has_one :photo1, :class_name => "Photo", :dependent => :destroy
  has_one :photo2, :class_name => "Photo", :dependent => :destroy
end

您可以使用更具描述性的名称代替photo1和photo2,具体取决于它们的用途。我只是用photo1和photo2作为例子。