在MySQL(和其他SQL数据库)中,向目的可能不明确的表或列添加注解可能很有帮助。(例如,在MySQL的create table syntax中搜索“comment”。
在ActiveRecord迁移中有没有办法做到这一点?我试过了,没有结果。
create_table :stuff do |t|
t.integer :obscure_column, :comment => "Explanatory comment"
end
我使用Rails 3.1。
在MySQL(和其他SQL数据库)中,向目的可能不明确的表或列添加注解可能很有帮助。(例如,在MySQL的create table syntax中搜索“comment”。
在ActiveRecord迁移中有没有办法做到这一点?我试过了,没有结果。
create_table :stuff do |t|
t.integer :obscure_column, :comment => "Explanatory comment"
end
我使用Rails 3.1。
5条答案
按热度按时间2uluyalo1#
在对原始问题的评论中提到的migration_comments gem似乎是满足这种需求的最佳跨数据库解决方案。除了为添加表和列注解提供迁移支持之外,gem还对schema.rb文件进行注解,以包含所有注解。非常适合我公司的需求(大型遗留rails应用程序,其中数据库模型不明确,还与编写本机SQL报告的分析师团队共享)。
nx7onnlm2#
在Rails 5中,你可以使用
change_column
:不要忘记将正确的column_type作为第三个参数。
evrscar23#
如果你使用postgresql,有一个名为pg_comment的gem可以添加这个功能。
gem添加了额外的命令来添加注解。注意postgresql中的语法与mysql中的语法不同,我猜这就是为什么没有通用的ActiveRecord实现的原因。
例如:
这可能会变得非常冗长,但我知道有一些很好的工具可以使用它。
其次,Rails确实允许你从Rails内部管理你的模式(这很棒),它可能看起来足以记录你的迁移,但过了一段时间,没有人再看迁移了。而且您会被一个未记录的模式所困。
在oracle-enhanced适配器中,此特性从一开始就可用,并且具有与您建议的相同的语法。
不幸的是,我还没有找到一个类似的gem或解决方案的MySQL。
qnzebej04#
我不知道这个方法是什么时候引入的,但在最新的rails(6.0)中,你可以使用
change_column_comment
方法。参考:https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-change_column_comment
xcitsw885#
除了
change_column_comment
(已经在另一个答案中提到)之外,还有change_table_comment
:from:
键允许您为注解创建可逆迁移。这通常意味着将其从nil
更改为某个字符串。当然,你可以通过修改to: nil
来删除注解。