簡體   English   中英

我可以使用 ActiveRecord 遷移向表或列添加注釋嗎?

[英]Can I add comments to a table or column using ActiveRecord Migrations?

在 MySQL(和其他 SQL 數據庫)中,向可能不清楚的表或列添加注釋會很有幫助。 (例如,搜索 MySQL 的“注釋”創建表語法。)

有沒有辦法在 ActiveRecord 遷移中做到這一點? 我試過這個沒有結果。

create_table :stuff do |t|
  t.integer :obscure_column, :comment => "Explanatory comment"
end

我正在使用 Rails 3.1。

在對原始問題的評論中提到的migration_comments gem 似乎是滿足此需求的最佳跨數據庫解決方案。 除了為添加表和列注釋提供遷移支持之外,gem 還注釋 schema.rb 文件以包含所有注釋。 非常適合我公司的需求(大型遺留 Rails 應用程序,其中數據庫模型不明確,並且還與編寫本機 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

不要忘記寫正確的 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'

這可能會變得非常冗長,但我知道有一些很好的工具可以使用它。

其次,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

參考: https : //api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-change_column_comment

在Rails精神中,Activerecord將讀取數據庫,而不是應用程序開發人員,因此不需要注釋。

第一件事是使列名清晰(有時候很棘手,我承認)。 除此之外,您可以對attr_accessible方法進行注釋以描述該列。

您還可以在模型alias_attribute :new_column_name, :column_name_in_db使用別名alias_attribute :new_column_name, :column_name_in_db ,在rails應用程序中為屬性提供一個明確的名稱......但它仍然不在數據庫內注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM