我有一个 rake 任务,除非存在表,否则它将无法工作。我在一个网站上与 20 多名工程师一起工作,所以我想确保他们在执行将填充相应表的 rake 任务之前已经迁移了表。
AR 有没有这样的方法Table.exists?如何确保他们已成功迁移表?
Table.exists
在 Rails 5 中,API 变得明确了表/视图,统称为 数据源 。
# Tables and views ActiveRecord::Base.connection.data_sources ActiveRecord::Base.connection.data_source_exists? 'kittens' # Tables ActiveRecord::Base.connection.tables ActiveRecord::Base.connection.table_exists? 'kittens' # Views ActiveRecord::Base.connection.views ActiveRecord::Base.connection.view_exists? 'kittens'
在 Rails 2、3 和 4 中,API 是关于 表 的。
# Listing of all tables and views ActiveRecord::Base.connection.tables # Checks for existence of kittens table/view (Kitten model) ActiveRecord::Base.connection.table_exists? 'kittens'
获取迁移状态:
# Tells you all migrations run ActiveRecord::Migrator.get_all_versions # Tells you the current schema version ActiveRecord::Migrator.current_version
如果您需要更多用于迁移或元数据的 API,请参阅:
ActiveRecord::SchemaMigration 这是表的ActiveRecord::Base类schema_migrations
ActiveRecord::Base
schema_migrations
ActiveRecord::Migrator 运行迁移时发生的所有操作