Могу ли я добавить комментарии к таблице или столбцу, используя ActiveRecord Migrations? - PullRequest
16 голосов
/ 08 ноября 2011

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

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

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

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

Ответы [ 4 ]

16 голосов
/ 01 марта 2013

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

4 голосов
/ 08 ноября 2011

Существует гем под названием 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 действительно позволяет вам управлять своей схемой изнутри rails (и это здорово), может показаться достаточным документировать ваши миграции, но послекакое-то время никто не смотрит на миграцию больше.И вы застряли с недокументированной схемой.

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

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

2 голосов
/ 05 марта 2019

В Rails 5 вы можете использовать change_column:

class AddCommentsToReferences < ActiveRecord::Migration[5.2]
  def up
    change_column :references, :achievement_id, :integer, comment: 'Achievement'
    change_column :references, :object_id, :integer, comment: 'Achievement object id'
  end
end

, не забудьте написать правильный column_type в качестве третьего параметра.

0 голосов
/ 08 ноября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...