【发布时间】:2019-01-29 22:03:58
【问题描述】:
我想创建一个数据库域,比如这个:
CREATE DOMAIN colour AS VARCHAR CHECK (VALUE IN ('red', 'green', 'blue'));
如何在 Rails Activerecord 中执行此操作而不在迁移中执行原始 SQL 查询?
另一个问题是,如何在 schema.rb 中反映域创建?
它有什么宝石吗?
我的设置是 PostgreSQL 9.6 和 Rails 5.0。
我希望有一个类似enable_extension (docs) 或create_trigger 的方法,如hair_trigger gem (link)。
【问题讨论】:
-
执行原始 SQL 有什么问题?
-
我曾经和
ActiveRecord::Migration.execute(query_string)运行相同 -
原始 SQL 不会反映在 schema.rb 中
-
好的,这个answer 提供了一个很好的选择:将查询添加到seeds.rb,因为它是
rails db:setup的一部分。不过,这需要进行测试。
标签: ruby-on-rails ruby rails-activerecord