我想在我的迁移文件中插入COMMENT,它是SQL命令的一部分。
As far as I know, I can add COMMENT to each table and column.
我记不起一个允许我按如下方式编写的插件名称:
t.string :name, :comment => "A user's fullname"
t.string :label, :comment => "name of color"
t.text :value, :comment => "self intro"
t.integer :position, :comment => "1 is left, 2 is right"
该语句神奇地被翻译成SQL,就像
create table test (
name varchar(255) not null COMMENT 'blahblah',
label varchar(255) null COMMENT 'hahaha'
text varchar(255) not null,
position int(11)
);
有人知道插件名吗?
答案 0 :(得分:6)
无耻插件 - 现在有一个'migration_comments'宝石可用于评论MySQL,SQLite和PostgreSQL。它目前支持Rails 2.3及更高版本。它还与annotate gem(v2.5.0或更高版本)一起在Model / Fixture / Spec文件中生成这些注释。
答案 1 :(得分:5)
我不知道任何可以完成你要求的插件。您可能能够通过查看ActiveRecord::ConnectionAdapters::ColumnDefinition
来破解您想要的内容。 (见active_record/connection_adapters/abstract/schema_definitions.rb
。)
正如您所看到的,Struct
定义了各种列选项(例如:limit
和:default
。)您可以使用:comment
扩展该结构,然后修改{{ 1}}生成所需的SQL。您还需要修改#to_sql
以设置TableDefinition#column
属性。
以下内容已经过测试并且有效(适用于MySQL):
:comment
答案 2 :(得分:1)
在将migration_comments gem用于Oracle之后失败,我只是尝试使用activerecord -v 4.1.1进行以下操作,并正确添加了注释。 因此不再需要额外的宝石。
ActiveRecord::Schema.define do
create_table TABLENAME do |table|
table.column :status, :integer, :comment => "Keeps status for this signal"
table.column :rowversion, :integer, :comment => "Increments with each change of this record"
etc..
end
end
答案 3 :(得分:1)
使用Rails 5,您现在可以直接为迁移添加注释,而无需使用任何插件。
您可以为表格,列和索引添加注释。
您可以在schema.rb中查看这些注释以及DBA工具。
示例:
class CreateProducts < ActiveRecord::Migration[5.0]
def change
create_table :products, comment: 'Products table' do |t|
t.string :name, comment: 'Name of the product'
t.string :barcode, comment: 'Barcode of the product'
t.string :description, comment: 'Product details'
t.float :msrp, comment: 'Maximum Retail Price'
t.float :our_price, comment: 'Selling price'
t.timestamps
end
add_index :products, :name, name: 'index_products_on_name', unique: true, comment: 'Index used to lookup product by name.'
end
end
注意:这仅支持PostgreSQL和MySQL。