2016-11-10 11 views
1

Я пытаюсь получить доступ к изображениям из скрепки с помощью connection_connection.
Вот мой код модели article.rbPaperclip has_attached_file не работает с Rails install_connection

class Article < ActiveRecord::Base 

    if Rails.env.production? 
    establish_connection SECONDARY_DB_CONFIG 
    else 
    establish_connection "article_#{Rails.env}" 
    end 

    has_many :assets, dependent: :destroy 

    accepts_nested_attributes_for :assets 
    validates_associated :assets 
end 

файл asset.rb

class Asset < ActiveRecord::Base 

    if Rails.env.production? 
    establish_connection SECONDARY_DB_CONFIG 
    else 
    establish_connection "article_#{Rails.env}" 
    end 

    belongs_to :article, polymorphic: true 
    has_attached_file :image, :styles => { :large=> "1200x700",:medium => "800x" } 

    validates_attachment_content_type :image, :content_type => ["image/jpg", "image/png", "image/jpeg"] 
end 

и код ввиду

<% Article.all.each do |article| %> 
    <div class="project-item col-sm-6 col-md-4 col-lg-3"> 
     <% if article.assets.length > 0 %> 
      <img src="<%= article.assets.last.image.url(:medium) %>" alt="<%=article.name%>" /> 
     <% end %> 
     <div class="hover-title"> 
      <h2 class="project-title"><%= article.name%></h2> 
      <p><%= property.short_desc %></p> 
     </div> 
    </div> 
<% end %> 

он выдает ошибку, как это

неопределенный метод `has_attached_file» для активов (вызов „Asset.connection“, чтобы установить соединение): Класс

+0

я не понимаю, почему не определен метод не имеет ничего общего с установлением соединения с базой данных. Проблема будет в том, что камень по какой-то причине не загружается - вы уверены, что добавили драгоценный камень скрепки в свой Gemfile? вы запустили установку пакета? Отправьте свой Gemfile на вопрос. Почему вы вообще устанавливаете соединение с базой данных для каждой модели? – David

+0

@ henners66 Мне нужно использовать какую-то другую базу данных проекта в текущем проекте, вот почему. И для драгоценного камня, который я использовал обновленный жемчуг paperclip – Rohit

+0

, достаточно справедливо, однако я все еще думаю, что это красная сельдь - проблема скорее того, что камень не загружается по какой-либо причине, это должно быть исключено первый. Я сделаю вывод из вашего предыдущего комментария, что вы добавили драгоценный камень в Gemfile и запустили 'bundle install' - вы также перезапустили сервер? – David

ответ

1

Вам нужно установить камень в канцелярской скрепки существующего проекта, копирования и настройки информации AWS S3 от проект, к которому вам нужно получить доступ.
В Gemfile

# paperclip gem for image manipulation 
gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68' 

# aws sdk for uploading at AWS 
gem 'aws-sdk', '< 2.0' 
gem 's3' 

В production.rb

# configuration for amazon s3 
    config.paperclip_defaults = { 
    :storage => :s3, 
    :s3_region=> ENV['AWS_REGION'], 
    :s3_credentials => { 
     :bucket => ENV['AWS_BUCKET'], 
     :access_key_id => ENV['AWS_ACCESS_KEY_ID'], 
     :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] 
    } 
    }