Tengo una tarea de rastrillo que no funcionará a menos que exista una tabla. Estoy trabajando con más de 20 ingenieros en un sitio web, así que quiero asegurarme de que hayan migrado la tabla antes de que puedan hacer una tarea de rastrillo que llenará esa tabla respectiva.
¿AR tiene un método como Table.exists? ¿Cómo puedo asegurarme de que hayan migrado la tabla correctamente?

rake db:migratefallará.)Respuestas:
En Rails 5, la API se hizo explícita con respecto a tablas / vistas , colectivamente fuentes de datos .
En Rails 2, 3 y 4, la API trata sobre tablas .
Obtener el estado de las migraciones:
Si necesita más API para migraciones o metadatos, consulte:
esta es la
ActiveRecord::Baseclase para laschema_migrationstabladonde toda la acción ocurre cuando se ejecutan migraciones
fuente
ActiveRecord::Base.connection.table_exist 'users'buscaría una tabla de usuarios.ActiveRecord::Base.connection.table_exists? 'kittensbuscaría una mesa de gatito. ¡Eso es a menos que destruya a todos los gatitos!drop_table :kittens.index_exists?('kittens', 'paws')drop_table(:hosts_users) if table_exists? :hosts_usersActiveRecord::Base.connection.data_source_exists? 'table_name'es el correcto ahoraincluso si la tabla no existe:
modelo
Kitten,kittensrieles de mesa esperados 3:Kitten.table_exists? # => falso
fuente
Descubrí esto mientras intentaba eliminar una tabla a través de una migración:
funciona para Rails 3.2
Esta forma más simple estará disponible en Rails 5:
Referencia: https://github.com/rails/rails/pull/16366
Y aquí está el CHANGELOG de Rails 5 ActiveRecord :
fuente
Carriles 5.1
o
fuente
La forma correcta de hacer esto es Model.table_exists?
fuente