例如,我想创建一个数据库域:
CREATE DOMAIN colour AS VARCHAR CHECK (VALUE IN ('red', 'green', 'blue'));
如何在Rails Activerecord中执行此操作而不在迁移中执行原始SQL查询?
另一个问题是,如何在schema.rb中反映域的创建?
有宝石吗?
我的设置是PostgreSQL 9.6和Rails 5.0。
我希望像hair_trigger gem(docs)一样有enable_extension
(link)或create_trigger
之类的方法。
答案 0 :(得分:2)
我认为做到这一点的最佳方法实际上是为此编写带有原始SQL的迁移
class ExampleMigration < ActiveRecord::Migration
def change
reversible do |dir|
dir.up do
# create color ype
execute <<-SQL
CREATE DOMAIN colour AS VARCHAR CHECK (VALUE IN ('red', 'green', 'blue'));
SQL
end
dir.down do
# drop color type
execute <<-SQL
DROP DOMAIN colour;
SQL
end
end
end
end
然后您可以按照本answer
中的说明设置运行这些迁移的rake任务