ruby-on-rails - 尝试附加带有 Active Storage 错误的文件

标签 ruby-on-rails ruby postgresql rails-activestorage

我正在尝试使用 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"}

这是我的事件 Controller

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>

配置/存储.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

最佳答案

检查 ActiveStorage installation

请运行以下命令为 ActiveStorage 生成迁移。

rails active_storage:install

然后

rails db:migrate

编辑:setup doc 中所述

关于ruby-on-rails - 尝试附加带有 Active Storage 错误的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414928/

相关文章:

ruby-on-rails - 您如何将Ruby on Rails用于科学(如果适用)?

ruby-on-rails - 在为我的 Rails 应用程序运行 Faye 服务器之前检查它是否存在

python - Ruby 哈希相当于 Python dict setdefault

postgresql - Postgres 同时构建索引

ruby-on-rails - 在 js.erb 文件中使用 jquery 渲染部分出现错误。渲染不是一个函数

ruby-on-rails - 如何以及为什么要在 Rails 应用程序中实现 Oauth?

ruby - 正则表达式任何非数字有异常(exception)

ruby-on-rails - 不同的日期保存到数据库 - 错误的时区

ruby-on-rails - 设置列默认值是否会损害数据库空间?

sql - 每个唯一 ID 一个值的 Postgres 总和