2009-11-26 54 views
0

作爲一個API端點,我需要提供一個帶有版本號的表模式,以便我正在使用的移動開發人員可以緩存模式直到它又改變了。Rails/MySQL:瞭解表的版本號或整個數據庫模式

我正在自動執行此過程,這使「版本控制」思想變得複雜。

起初我以爲我可以使用最新的遷移編號作爲版本號,但是現在發現Rails遷移現在是非連續的,所以這意味着我需要給他們所有的遷移編號,他們需要通過比較陣列來決定是否存在新的遷移(也許這是解決方案?)

我想知道我是否缺少任何東西 - 如果Rails中有任何其他架構版本號除了那些存儲在遷移表中,或者如果有任何方式通過mysql來跟蹤它。

回答

0

使用遷移版本可能是一個好主意。 如果您不想公開缺失遷移的完整列表,則可以提供當前模式版本進行快速比較,然後在第二個請求中公開完整列表。

您可以使用ActiveRecord::Migrator對象獲取待定遷移列表。

migrations = ActiveRecord::Migrator.new(:up, 'db/migrate').pending_migrations 
migrations.each do |migration| 
    migration.version 
end 

對於當前的模式版本。

schema = File.read("#{RAILS_ROOT}/db/schema.rb") 
version = ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, schema) 
puts version