Я пытаюсь прикрепить файлы с помощью Active Storage и постоянно получаю сообщение об ошибке:
Невозможно автоматически загрузить константу ActiveStorage :: Blob :: Analyzable, ожидаемый /Users/sergeylukyanenko/.rvm/gems/ruby-2.6.0 / gems / activestorage-5.2.2 / app / models / active_storage / blob / analyzable.rb, чтобы определить его
Request
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"L0czdSokZuL6CyRqMNEUAj/6AGRItCOZ/oIca6OGHtgsxD+ExTnZ1BtMdvFyHQTOEZ5/5LEd6dma23r1r8zIlA==",
"event"=>
{"name"=>"Coffee meetup",
"date"=>"2019-01-28",
"image"=>
#<ActionDispatch::Http::UploadedFile:0x00007ff464e03278
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"event[image]\"; filename=\"agile-software-development.jpg\"\r\n" + "Content-Type: image/jpeg\r\n",
@original_filename="agile-software-development.jpg",
@tempfile=#<File:/var/folders/6j/xkzm5glx2k9_ycr6c235lx2m0000gn/T/RackMultipart20190128-91451-1jdmov.jpg>>},
"commit"=>"Create Event"}
Вот мой EventsController
def create
if current_user
@event = current_user.events.build(event_params)
else
@event = Event.new(event_params)
end
respond_to do |format|
if @event.save
format.html { redirect_to @event, :flash => { :success => 'Event was successfully created.' }}
format.json { render :show, status: :created, location: @event }
else
format.html { render :new }
format.json { render json: @event.errors, status: :unprocessable_entity }
end
end
end
def event_params
params.require(:event).permit(:name, :date, :private, :image)
end
и модель событий
class Event < ApplicationRecord
validates :name, presence: true
validates :date, presence: true
has_one_attached :image
belongs_to :user, optional: true
has_many :tasks, dependent: :destroy
scope :only_public, -> { where(private: false) }
scope :only_private, -> { where(private: true) }
scope :by_recent, -> { order(date: :asc) }
def start_time
self.date
end
end
Форма события
<div class="field mt-4">
<%= form.file_field :image %>
</div>
config / storage.yml
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
# Use rails secrets:edit to set the AWS secrets (as shared:aws:access_key_id|secret_access_key)
amazon:
service: S3
access_key_id: <%= Rails.application.secrets.aws[:access_key_id] %>
secret_access_key: <%= Rails.application.secrets.aws[:secret_access_key] %>
region: us-east-1
bucket: your_own_bucket