Как проверить дату создания схемы 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", которое будет работать не для ранее созданных схем, а для новых.
- Создать модель для арендаторов
rails g model Tenant name:string
Добавить after_create callback для модели Tenant
class Tenant < ActiveRecord::Base after_create :tenant_moves_in private def tenant_moves_in Apartment::Tenant.create self.name end
Например создайте некоторый сценарий для создания арендаторов или используйте возможность 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