Ruby on rails 我可以使用ActiveRecord迁移向表或列添加注释吗?

Ruby on rails 我可以使用ActiveRecord迁移向表或列添加注释吗?,ruby-on-rails,activerecord,rails-migrations,Ruby On Rails,Activerecord,Rails Migrations,在MySQL(和其他SQL数据库)中,向目的可能不明确的表或列添加注释可能会有所帮助。(例如,在MySQL中搜索“注释”。) 有没有办法在ActiveRecord迁移中做到这一点?我试过了,但没有结果 create_table :stuff do |t| t.integer :obscure_column, :comment => "Explanatory comment" end 我使用的是Rails 3.1。如果您使用的是postgresql,有一个名为gem的工具将添加此功能

在MySQL(和其他SQL数据库)中,向目的可能不明确的表或列添加注释可能会有所帮助。(例如,在MySQL中搜索“注释”。)

有没有办法在ActiveRecord迁移中做到这一点?我试过了,但没有结果

create_table :stuff do |t|
  t.integer :obscure_column, :comment => "Explanatory comment"
end
我使用的是Rails 3.1。

如果您使用的是postgresql,有一个名为gem的工具将添加此功能

gem添加了额外的命令来添加注释。请注意,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内部管理您的模式(这太棒了),记录您的迁移似乎就足够了,但过了一段时间,就没有人再看迁移了。而您被困在一个未记录的模式中

在适配器中,此功能从一开始就可用,其语法与您建议的相同


不幸的是,我还没有为MySQL找到类似的gem或解决方案。

在对原始问题的评论中提到的gem似乎是满足这一需求的最佳跨数据库解决方案。除了为添加表和列注释提供迁移支持外,gem还注释schema.rb文件以包含所有注释。非常适合我公司的需要(大型传统rails应用程序,其中数据库模型不明确,并且与编写本机SQL报告的分析师团队共享)。

在rails 5中,您可以使用
change\u列

class AddCommentStoreReferences

不要忘记将正确的列类型作为第三个参数写入。

我不知道何时引入此方法,但在最新的rails(6.0)中,您可以使用
change\u column\u comment
方法

def change
  change_column_comment(:posts, :state, from: "old_comment", to: "new_comment")
end

参考:

不久前我写了一篇gem
migration\u评论
,可以满足您的需要。还没有经过很长时间的战斗测试,但我欢迎任何意见…@PinnyM-终于尝试了。令人惊叹的!感谢您发布它。这是MySQL的,但它已经4年没有更新了:值得注意的是,评论是在Rails 5中生成的,不需要gem。C.f.最新rails中的“comment”修饰符,可以使用
change\u column\u comment
,如我在最新rails中的回答所述,可以使用
change\u column\u comment
,如我在回答中所述,但是没有这样做。