mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
fa6067d0dc
Similar to: #42378 Tried adding test cases for the changes but migration file would always use id as primary_key_type and reference type as foreign_key_type. Did not find any good way to assert the changes. Tested locally and following is the schema generated for Action Text migration if `primary_key_type: :uuid` ``` create_table "action_text_rich_texts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "name", null: false t.text "body" t.string "record_type", null: false t.uuid "record_id", null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.index ["record_type", "record_id", "name"], name: "index_action_text_rich_texts_uniqueness", unique: true end ```
25 lines
912 B
Ruby
25 lines
912 B
Ruby
class CreateActionTextTables < ActiveRecord::Migration[6.0]
|
|
def change
|
|
# Use Active Record's configured type for primary and foreign keys
|
|
primary_key_type, foreign_key_type = primary_and_foreign_key_types
|
|
|
|
create_table :action_text_rich_texts, id: primary_key_type do |t|
|
|
t.string :name, null: false
|
|
t.text :body, size: :long
|
|
t.references :record, null: false, polymorphic: true, index: false, type: foreign_key_type
|
|
|
|
t.timestamps
|
|
|
|
t.index [ :record_type, :record_id, :name ], name: "index_action_text_rich_texts_uniqueness", unique: true
|
|
end
|
|
end
|
|
|
|
private
|
|
def primary_and_foreign_key_types
|
|
config = Rails.configuration.generators
|
|
setting = config.options[config.orm][:primary_key_type]
|
|
primary_key_type = setting || :primary_key
|
|
foreign_key_type = setting || :bigint
|
|
[primary_key_type, foreign_key_type]
|
|
end
|
|
end
|