Nat*_*ong 16 activerecord ruby-on-rails rails-migrations
在MySQL(和其他SQL数据库)中,将注释添加到目的可能不明确的表或列中会很有帮助.(例如,搜索MySQL的"注释" 的创建表语法.)
有没有办法在ActiveRecord Migration中执行此操作?我试过没有结果.
create_table :stuff do |t|
t.integer :obscure_column, :comment => "Explanatory comment"
end
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails 3.1.
Qua*_*ion 17
在对原始问题的评论中提到的migration_comments gem似乎是满足此需求的最佳跨数据库解决方案.除了为添加表和列注释提供迁移支持外,gem还注释schema.rb文件以包含所有注释.完美满足我公司的需求(大型遗留轨道应用程序,其中数据库模型不明确,并与编写本机SQL报告的分析师团队共享).
在 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
Run Code Online (Sandbox Code Playgroud)
不要忘记写正确的column_type作为第三个参数。
如果您使用的是postgresql,则有一个名为pg_comment的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'
Run Code Online (Sandbox Code Playgroud)
这可能会很冗长,但是我知道有一些不错的工具可以利用它。
其次,Rails确实允许您从Rails内部管理架构(这很棒),似乎足以记录您的迁移,但是过了一会儿再也看不到迁移了。而且您陷入了未记录的架构。
在oracle增强的适配器中,此功能从一开始就可用,并且语法与您建议的语法相同。
不幸的是,我还没有找到与MySQL类似的gem或解决方案。
我不知道这个方法是什么时候引入的,但是在最新的rails(6.0)中你可以使用change_column_comment方法。
def change
change_column_comment(:posts, :state, from: "old_comment", to: "new_comment")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7179 次 |
| 最近记录: |