如何检查 postgres 模式的创建日期?
How to check creation date of postgres schema?
出于调试目的,我想知道我的一些 postgres 模式是什么时候创建的——这可能吗?
从 PostgreSQL 和 Apartment 文档中搜索但没有找到任何有用的线索。
我使用的环境和工具:
+---------------+----------+
| Tools | Version |
+--------------------------+
| PostgreSQL | 9.4.1 |
| Ruby | 2.2.1p85 |
| Ruby on Rails | 4.1.9 |
| Apartment gem | 0.26.1 |
+---------------+----------+
如您所见,我使用 Apartment 在我的多租户 rails 应用程序中创建模式。
免责声明:这回答了对问题的错误解释。
我保留它以防它对某人有用...
当您运行 Ruby 使用 rake db:migrate
进行 Rails 迁移时,rails 维护一个文件 显示您的快照数据库结构。此文件位于 db/schema.rb
.
这里有一个 table 的例子,rails 添加了 created_at
:
create_table "comments", force: true do |t|
t.integer "user_id"
t.integer "article_id"
t.text "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "origin", default: "web"
end
这里有更多详细信息:
http://edgeguides.rubyonrails.org/active_record_migrations.html
PostgreSQL 系统目录不存储创建数据库对象的日期。您 可以 配置 Postgre SQL 或多或少地记录每个 SQL 语句 (log_statement setting),但您必须事先这样做。
您可以创建一个 event trigger and store the date of this event in a table. And example can be found here
我将post一个“Rails方式”解决方案,它不适用于以前制作的模式,但适用于新模式。
- 为租户创建模型
rails g model Tenant name:string
为租户模型添加 after_create callback
class Tenant < ActiveRecord::Base
after_create :tenant_moves_in
private
def tenant_moves_in
Apartment::Tenant.create self.name
end
例如。创建某种脚本来创建租户或使用 ActiveRecord CRUD 功能与租户模型直接在您的应用程序中与租户一起操作,如 Tenant.create(name: 'new_tenant')
.
这样你可以在你的数据库租户 table 中有 created_at 和 updated_at 日期与公寓租户相关,它们代表 postgres 模式。
当然,您应该避免使用像 Apartment::Tenant.create 'new_tenant'
这样的 Aparmtent 工具创建租户,因为那样不会创建租户模型对象,因此不会保留 created_at 时间。
出于调试目的,我想知道我的一些 postgres 模式是什么时候创建的——这可能吗?
从 PostgreSQL 和 Apartment 文档中搜索但没有找到任何有用的线索。
我使用的环境和工具:
+---------------+----------+
| Tools | Version |
+--------------------------+
| PostgreSQL | 9.4.1 |
| Ruby | 2.2.1p85 |
| Ruby on Rails | 4.1.9 |
| Apartment gem | 0.26.1 |
+---------------+----------+
如您所见,我使用 Apartment 在我的多租户 rails 应用程序中创建模式。
免责声明:这回答了对问题的错误解释。 我保留它以防它对某人有用...
当您运行 Ruby 使用 rake db:migrate
进行 Rails 迁移时,rails 维护一个文件 显示您的快照数据库结构。此文件位于 db/schema.rb
.
这里有一个 table 的例子,rails 添加了 created_at
:
create_table "comments", force: true do |t|
t.integer "user_id"
t.integer "article_id"
t.text "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "origin", default: "web"
end
这里有更多详细信息: http://edgeguides.rubyonrails.org/active_record_migrations.html
PostgreSQL 系统目录不存储创建数据库对象的日期。您 可以 配置 Postgre SQL 或多或少地记录每个 SQL 语句 (log_statement setting),但您必须事先这样做。
您可以创建一个 event trigger and store the date of this event in a table. And example can be found here
我将post一个“Rails方式”解决方案,它不适用于以前制作的模式,但适用于新模式。
- 为租户创建模型
rails g model Tenant name:string
为租户模型添加 after_create callback
class Tenant < ActiveRecord::Base after_create :tenant_moves_in private def tenant_moves_in Apartment::Tenant.create self.name end
例如。创建某种脚本来创建租户或使用 ActiveRecord CRUD 功能与租户模型直接在您的应用程序中与租户一起操作,如
Tenant.create(name: 'new_tenant')
.
这样你可以在你的数据库租户 table 中有 created_at 和 updated_at 日期与公寓租户相关,它们代表 postgres 模式。
当然,您应该避免使用像 Apartment::Tenant.create 'new_tenant'
这样的 Aparmtent 工具创建租户,因为那样不会创建租户模型对象,因此不会保留 created_at 时间。