cómo cambiar la migración de rieles t.timestamps para usar `timestamp (0) sin timezone` en postgres

Estoy tratando de descubrir cómo cambiar el tipo de datos nativo quet.timestamps utiliza en una migración de rieles. El tipo predeterminado que termina en postgres estimestamp without timezone. Lo que me gustaría en cambio estimestamp(0) without timezone.

Me gustaría cambiar el tipo de datos nativo para que cuando se cree una nueva tabla yt.timestamps se utiliza en la migración, crea automáticamente el tipo de datos de marca de tiempo correcto.

Requierotimestamp(0) without timezone porque mi aplicación rails comparte su DB con una aplicación laravel y ambas aplicaciones pueden insertar datos. Debido al hecho de que los rieles usan milisegundos / laravel no, y no parece haber una manera (a partir del 23/10/2018) para que laravel admita tener una tabla que contenga diferentes formatos de marcas de tiempo Y-m-d H:i:s.u vsY-m-d H:i:s) sin tener que desactivar las marcas de tiempo en el modelo, esencialmente deshabilitando la administración automática de ellos, me gustaría que la base de datos imponga el uso de un único formato Y-m-d H:i:s).

Para más detalles por favor mi otra pregunta: ¿Hay alguna manera de cambiar las marcas de tiempo predeterminadas de Rails a Y-m-d H: i: s (en lugar de Y-m-d H: i: s.u) o hacer que laravel ignore la parte decimal de Y-m-d H: i: s.u?

Así que quiero usartimestamp(0) para truncar los milisegundos y no tener que pensar en configurar correctamente los tipos de marca de tiempo de las tablas al crear una nueva tabla, ya que el tipo nativo ya seríatimestamp(0)

He intentado esto

./config/environments/initializers

require "active_record/connection_adapters/postgresql_adapter"

module ActiveRecord
 module ConnectionAdapters
   class PostgreSQLAdapter
     NATIVE_DATABASE_TYPES.merge!(
      timestamp: { name: "timestamp(0) without timezone" }
     )
   end
 end
end

y una migración como

class ChangeTimestampTypesToTimestamp0 < ActiveRecord::Migration[5.2]
  def change
    create_table :test, id: :uuid, default: -> { "gen_random_uuid()" } do|t|
      t.string :name, null: false

      t.timestamps
    end
  end
end

Pero eso no funcionó

También intenté cambiar la marca de tiempo para usar la marca de tiempo con la misma migración anterior que un control de cordura, todavía no tuve suerte ...

require "active_record/connection_adapters/postgresql_adapter"

module ActiveRecord
 module ConnectionAdapters
   class PostgreSQLAdapter
     NATIVE_DATABASE_TYPES.merge!(
       timestamp: { name: "timestamptz" }
     )
   end
 end
end

Respuestas a la pregunta(2)

Su respuesta a la pregunta