如何查看postgres架构的创建日期?

时间:2015-04-15 09:21:19

标签: ruby-on-rails postgresql database-schema multi-tenant apartment-gem

出于调试目的,我想知道我的一些postgres模式何时可以创建?

从PostgreSQL和公寓文档中搜索,但没有找到任何有用的线索。

我使用的环境和工具:

+---------------+----------+
| Tools         | Version  |
+--------------------------+
| PostgreSQL    | 9.4.1    |
| Ruby          | 2.2.1p85 |
| Ruby on Rails | 4.1.9    |
| Apartment gem | 0.26.1   |
+---------------+----------+

如您所见,我使用Apartment在我的多租户rails应用程序中创建模式。

4 个答案:

答案 0 :(得分:1)

PostgreSQL系统目录不存储创建数据库对象的日期。您可以配置PostgreSQL以记录每个SQL语句(log_statement setting)或多或少,但您必须事先做到这一点。

答案 1 :(得分:1)

您可以创建event trigger并将此事件的日期存储在表格中。可以找到示例here

答案 2 :(得分:0)

我发布" Rails方式"解决方案不适用于以前制作的模式,但不适用于新模式。

  1. 为租户rails g model Tenant name:string
  2. 创建模型
  3. 为租户模型添加after_create callback

    class Tenant < ActiveRecord::Base
      after_create :tenant_moves_in
    
      private
    
      def tenant_moves_in
        Apartment::Tenant.create self.name
      end
    
  4. 对于前。为租户创建一些脚本或使用租户模型的ActiveRecord CRUD能力直接与您的应用中的租户一起操作,如Tenant.create(name: 'new_tenant')

  5. 那么你可以在db tenants表中创建与Apartment Tenants相关的created_at和updated_at日期,它们代表postgres模式。

    当然,您应该避免使用像Apartment::Tenant.create 'new_tenant'这样的Aparmtent工具来租户,因为这不会创建租户模型对象,因此不会保留created_at时间。

答案 3 :(得分:-1)

Disclamer:这回答了对问题的错误解释。 我保留它,以防它对某人有用......

当您使用rake db:migrate运行Ruby on Rails迁移时,rails会维护一个文件,向您显示数据库结构的快照。此文件位于db/schema.rb

以下是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