I'm trying to use Active Storage in Rails 5.2. I found that I should create field with type file
in migration, but I have an error:
$ 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>'
Migration:
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
I was trying to create string field, but it doesn't work.
Couldn't find anything about that in official docs
I have migration for active storage and I passed ok
Instead of a dedicated field that you need to create in your own migration (t.file :image
) active storage uses two tables that you setup with rails active_storage:install
.
When you setup your storage.yml you should be able to use
has_one_attached :image
within the Dishes
model without creating a image
column.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With