Я не знаю ни одного плагина, который бы выполнил то, что вы просите.Вы можете иметь возможность взломать то, что вы хотите, посмотрев на ActiveRecord::ConnectionAdapters::ColumnDefinition
.(См. active_record/connection_adapters/abstract/schema_definitions.rb
.)
Как видите, Struct
определяет различные параметры столбцов (например, :limit
и :default
.). Вы можете расширить эту структуру с помощью :comment
, а затем изменить#to_sql
для генерации необходимого SQL.Вам также необходимо изменить TableDefinition#column
для установки атрибута :comment
.
Следующее было протестировано и работает (для MySQL):
module ActiveRecord
module ConnectionAdapters
class ColumnDefinition
attr_accessor :comment
def to_sql_with_comment
column_sql = to_sql_without_comment
return column_sql if comment.nil?
"#{column_sql} COMMENT '#{base.quote_string(comment)}'"
end
alias_method_chain :to_sql, :comment
end
class TableDefinition
# Completely replaces (and duplicates the existing code, but there's
# no place to really hook into the middle of this.)
def column(name, type, options = {})
column = self[name] || ColumnDefinition.new(@base, name, type)
if options[:limit]
column.limit = options[:limit]
elsif native[type.to_sym].is_a?(Hash)
column.limit = native[type.to_sym][:limit]
end
column.precision = options[:precision]
column.scale = options[:scale]
column.default = options[:default]
column.null = options[:null]
column.comment = options[:comment]
@columns << column unless @columns.include? column
self
end
end
end
end