Здесь по этой ссылке https://devcenter.heroku.com/articles/paperclip-s3
Добавьте это в gemfile
gem 'paperclip'
gem 'aws-sdk', '~> 2.3'
Затем установите пакет
config / environment / production.rb
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
Кроме того, нам нужно установить переменные конфигурации AWS в приложении Heroku.
heroku config:set S3_BUCKET_NAME=your_bucket_name
heroku config:set AWS_ACCESS_KEY_ID=your_access_key_id
heroku config:set AWS_SECRET_ACCESS_KEY=your_secret_access_key
heroku config:set AWS_REGION=your_aws_region
$ rails g migration AddAvatarToProfiles
class AddAvatarToProfiless < ActiveRecord::Migration
def self.up
add_attachment :profiles, :avatar
end
def self.down
remove_attachment :profiles, :avatar
end
end
Тогда rake db:migrate
Это в представлении
<%= form_for(@profile, multipart: true) do |f| %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :avatar %>
<%= f.file_field :avatar %>
</div>
<div class="actions">
<%= f.submit 'Make a friend' %>
<%= link_to 'Nevermind', friends_path, class: 'button' %>
</div>
<% end %>
и это внутри контроллера
класс ProfilesController
def create
@profile = Profile.new(profile_params)
if @profile.save
redirect_to @friend, notice: 'Profile was successfully created.'
else
render action: 'new'
end
end
private
def profile_params
params.require(:profile).permit(:avatar, :name)
end
end