Rails скрепка, как создать несколько загрузок изображений и путей? - PullRequest
1 голос
/ 05 декабря 2011

У меня есть загрузка изображений для модели моей компании, но это только для 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 разных изображения и как должна быть маршрутизация.

1 Ответ

0 голосов
/ 05 декабря 2011
class Virksomhed < ActiveRecord::Base
  has_one :photo1, :class_name => "Photo", :dependent => :destroy
  has_one :photo2, :class_name => "Photo", :dependent => :destroy
end

Вместо фото1 и фото2 вы можете использовать имена, которые являются более описательными в зависимости от того, для чего они используются.Я просто использовал фото1 и фото2 в качестве примеров.

...