7

我正在尝试在 Rails 5.2 中使用 Active Storage。我发现我应该file在迁移中创建类型为字段,但是我有一个错误:

$ rdm
Running via Spring preloader in process 40193
== 20171217191942 CreateDishes: migrating 
=====================================
-- create_table(:dishes)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method `file' for #<ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition:0x00007fd56e297750>
/Users/alder/Projects/_apps/service_exchange/rails-backend/db/migrate/20171217191942_create_dishes.rb:6:in `block in change'
/Users/alder/Projects/_apps/service_exchange/rails-backend/db/migrate/20171217191942_create_dishes.rb:3:in `change'
-e:1:in `<main>'

移民:

class CreateDishes < ActiveRecord::Migration[5.2]
  def change
    create_table :dishes do |t|
      t.string :name, index: true
      t.string :description
      t.file :image

      t.timestamps
    end
  end
end

我试图创建字符串字段,但它不起作用。

在官方文档中找不到任何相关内容

我有活动存储迁移,我通过了

4

2 回答 2

11

而不是您需要在自己的迁移中创建的专用字段 ( t.file :image) 活动存储使用您设置的 两个表rails active_storage:install。设置 storage.yml 时,您应该可以使用

has_one_attached :image

Dishes模型内而不创建image列。

于 2017-12-24T00:37:15.397 回答
4

您可以检查此问题(ActiveRecord 字段类型),因为没有任何类型,例如file您需要上传可以使用类型创建的string文件t.string

于 2017-12-22T09:13:13.013 回答