Подтвердить что ты не робот

Можно ли добавлять комментарии к таблице или столбцу с помощью миграции ActiveRecord?

В MySQL (и других базах данных SQL) может быть полезно добавить комментарии к таблице или столбцу, цель которого может быть неясной. (Search MySQL создать синтаксис таблицы для "комментариев" для примеров.)

Есть ли способ сделать это в миграции ActiveRecord? Я пробовал это без каких-либо результатов.

create_table :stuff do |t|
  t.integer :obscure_column, :comment => "Explanatory comment"
end

Я использую Rails 3.1.

4b9b3361

Ответ 1

migration_comments драгоценный камень, упомянутый в комментарии к исходному вопросу, представляется лучшим решением для кросс-баз данных для этой потребности. Помимо предоставления поддержки миграции для добавления комментариев к таблицам и столбцам, жемчуг также аннотирует файл schema.rb для включения всех комментариев. Идеально подходит для потребностей моей компании (большое наследие rails, где модель базы данных неоднозначна, а также делится с командой аналитиков, пишущих собственные SQL-отчеты).

Ответ 2

Существует жемчужина pg_comment, которая добавит эту функцию, если вы используете postgresql.

Драгоценный камень добавляет дополнительные команды для добавления комментариев. Обратите внимание, что синтаксис в postgresql отличается от mysql, и я думаю, поэтому нет общей реализации ActiveRecord.

Например:

create_table :stuff do |t|
  t.integer :some_value
end
set_table_comment :stuff, 'This table stores stuff.'
set_column_comment :stuff, :some_value, 'Stores some value'

Это может быть довольно многословным, но я знаю, что есть некоторые полезные инструменты, которые используют это.

Во-вторых, Rails действительно позволяет вам управлять своей схемой из рельсов (и это потрясающе), может показаться достаточным документировать ваши миграции, но через некоторое время никто больше не смотрит на миграции. И вы застряли с недокументированной схемой.

В адаптере oracle-enhanced эта функция доступна с самого начала и имеет тот же синтаксис, что и вы предложили.

К сожалению, я не нашел аналогичный камень или решение для MySQL.

Ответ 3

В духе Rails Activerecord будет читать базу данных, а не разработчик приложения, поэтому комментарии не нужны.

Первое, что нужно сделать, чтобы имена столбцов были ясными (иногда сложно, я допускаю). Кроме того, вы можете поместить комментарии к методу attr_accessible для описания столбца.

Вы также можете использовать псевдонимы в своей модели alias_attribute :new_column_name, :column_name_in_db чтобы дать в вашем приложении rails четкое имя атрибута... но он все равно не комментирует внутри БД.