Как проверить дату создания схемы postgres?

В целях отладки я хотел бы знать, когда некоторые из моих схем postgres создаются при этом. Возможно ли это?

Искал из PostgreSQL и документации по квартире, но не нашел никаких полезных подсказок.

Среда и инструменты, которые я использую:

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

Как вы можете видеть, я использую Apartment для создания схем в своем приложении для многопользовательских рельсов.

4 ответа

Решение

Системные каталоги PostgreSQL не хранят даты создания объектов базы данных. Вы можете настроить PostgreSQL на запись более или менее каждого оператора SQL ( параметр log_statement), но вам пришлось бы сделать это заранее.

Вы можете создать триггер события и сохранить дату этого события в таблице. И пример можно найти здесь

Я опубликую решение "Rails way", которое будет работать не для ранее созданных схем, а для новых.

  1. Создать модель для арендаторов rails g model Tenant name:string
  2. Добавить after_create callback для модели Tenant

    class Tenant < ActiveRecord::Base
      after_create :tenant_moves_in
    
      private
    
      def tenant_moves_in
        Apartment::Tenant.create self.name
      end
    
  3. Например создайте некоторый сценарий для создания арендаторов или используйте возможность ActiveRecord CRUD с моделью Tenant для работы с арендаторами в вашем приложении, например Tenant.create(name: 'new_tenant'),

Таким образом, вы можете иметь даты create_at и updated_at в своей таблице арендаторов db относительно квартирных арендаторов, которые представляют схемы postgres.

Конечно, тогда вам следует избегать создания арендаторов с помощью инструмента Aparmtent, например Apartment::Tenant.create 'new_tenant' потому что это не создаст объект модели арендатора и, следовательно, не будет сохранено время созданного_ателлита.

Disclamer: это ответ на неправильное толкование вопроса. Я держу это на случай, если это кому-нибудь пригодится...

Когда вы запускаете миграцию Ruby on Rails с rake db:migrate, рельсы поддерживают файл, который показывает вам снимок структуры базы данных. Этот файл находится в db/schema.rb,

Вот пример таблицы с 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

Другие вопросы по тегам