Как добавить домен базы данных в Activerecord без выполнения необработанного SQL-запроса? - PullRequest
0 голосов
/ 29 января 2019

Я хочу создать домен базы данных, например, такой:

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, как в gem hair_trigger ( link ).

1 Ответ

0 голосов
/ 29 января 2019

Я думаю, что лучший способ сделать это - написание миграции с использованием необработанного 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

, а затем вы можете настроить задачу rake, которая запускает эти миграции, как описано здесь в этом ответить

...