Попытка прикрепить файл с ошибкой Active Storage - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь прикрепить файлы с помощью 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

1 Ответ

0 голосов
/ 29 января 2019

Проверка Установка ActiveStorage

Запустите приведенную ниже команду, чтобы сгенерировать миграцию для ActiveStorage.

rails active_storage:install

Тогда

rails db:migrate

Редактировать: Как уже упоминалось в setup doc

...