3

我正在尝试使用我的 Rails 数据库并不断遇到此错误。该数据库之前一直在工作,直到 5 天前它停止并且我开始看到此错误时才出现活动存储问题:

*** NameError Exception: uninitialized constant ActiveStorage::Attachment::ActiveStorage::Blob

我有一个发生错误的 .jbuilder 文件,

json.array! @campaigns do |campaign|
    byebug
    json.extract! campaign, :id, :title, :description, :goal, :campaign_end, :user_id, :current_amount, :ends, :percent_complete, :amount_left_to_fund, :owner, :successful
    json.photoUrl url_for(campaign.photo)
end

它说 url_for(campaign.photo) 我得到错误。但是,只需键入 campaign.photo 即可显示 ActiveStorage 实例及其附加的活动:

#<ActiveStorage::Attached::One:0x00007febc64f91b0 @name="photo", @record=#<Campaign id: 7, title: "Surgery", description: "Lorem ipsum dolor sit amet, consectetur adipiscing...", goal: 5000, user_id: 8, campaign_end: "2019-05-31 16:00:00", created_at: "2019-05-01 14:20:14", updated_at: "2019-05-01 14:20:14", successful: false>, @dependent=:purge_later>

我只是想获取这张活动存储照片的 url。我尝试用谷歌搜索这个错误,但没有看到任何与此错误消息有关的内容。任何帮助将不胜感激!

4

3 回答 3

5

我刚刚遇到这个问题并用最简单的解决方案解决了。

storage.yml文件有一个最终未对齐的块。导致yaml parse error我想象下游加载/初始化错误的完整列表。

您可以使用 linter 或简单地Rails.application.config_for(:storage)从 rails 控制台运行来验证您的 yaml。

于 2019-07-27T06:57:41.330 回答
0

我的问题也在其中,storage.yml但这是因为我将 Ruby 嵌入了一段已被注释的代码中,但 Ruby 标记没有被注释:

# digitalocean_spaces:
#   service: S3
#   access_key_id: <%= Rails.application.credentials.dig(:digitalocean_spaces, :access_key_id) %>
于 2022-02-21T21:25:50.490 回答
0

在我的情况下(使用 Rails 5.1.4 和 ruby​​ 2.4.2 的旧版 APP)起作用的是改变由 activestorage 安装创建的迁移文件:

ActiveStorage::CreateTables

对此:

ActiveStorageCreateTables

该文件可以位于 db/migrate/

于 2021-07-02T17:53:49.597 回答