【发布时间】:2018-01-29 19:48:29
【问题描述】:
我正在关注来自 SitePoint 的 tutorial 将模型属性设置为 Enum 值,Rails 从 4.1 开始支持该值。
我正在尝试添加季节枚举,而不是性别枚举。
这是我在schema.db 中遇到的问题
# Could not dump table "semesters" because of following StandardError
# Unknown type 'season' for column 'season'
这是我的migration:
class AddSeasonToSemesters < ActiveRecord::Migration[5.1]
def up
execute <<-SQL
CREATE TYPE season AS ENUM ('fall', 'winter', 'spring', 'summer');
SQL
add_column :semesters, :season, :season, index: true
end
def down
remove_column :semesters, :season
execute <<-SQL
DROP TYPE season;
SQL
end
end
还有我的model 文件:
class Semester < ApplicationRecord
enum season: {
fall: 'fall',
winter: 'winter',
spring: 'spring',
summer: 'summer'
}
end
知道我做错了什么吗?任何方向将不胜感激,谢谢。
【问题讨论】:
-
由于您直接使用 sql 语句,因此请确保您的
config.active_record.schema_format = :sql # default is :ruby在您的config/application.rb中 -
是的,这是在类似问题中建议的。 stackoverflow.com/a/45430348/4330767 提出了另一种将架构保留在 ruby 中的解决方案,但它似乎没有按预期工作。有什么想法吗?
标签: ruby-on-rails postgresql activerecord