instance method
create_enum
Ruby on Rails 8.1.2
Since v7.0.10Signature
create_enum(name, values, **options)
Given a name and an array of values, creates an enum type.
Parameters
-
namereq -
valuesreq -
optionskeyrest
Source
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 556
def create_enum(name, values, **options)
sql_values = values.map { |s| quote(s) }.join(", ")
scope = quoted_scope(name)
query = <<~SQL
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1
FROM pg_type t
JOIN pg_namespace n ON t.typnamespace = n.oid
WHERE t.typname = #{scope[:name]}
AND n.nspname = #{scope[:schema]}
) THEN
CREATE TYPE #{quote_table_name(name)} AS ENUM (#{sql_values});
END IF;
END
$$;
SQL
internal_exec_query(query).tap { reload_type_map }
end
Defined in activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb line 556
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::ConnectionAdapters::PostgreSQLAdapter