[英]Migrations code not generated in schema.rb?
我不得不將execute
放入一個表遷移中。 它看起來像這樣:
class CreateFoos < ActiveRecord::Migration
def up
create_table :items do |t|
t.integer :bar
end
execute("GRANT SELECT ON items TO otheruser;")
end
def down
drop_table :items
end
end
這很好用,但db/schema.rb
文件(應該是數據庫創建的權限)缺少具有execute
命令的行。
有沒有我缺少的東西或者這是生成schema.rb
時的默認行為?
我可以通過簡單地忽略schema.rb
並在部署時使用rake db:migrate
生成表來繞過這個問題,但我看到了建議以避免這樣做。
有任何想法嗎?
Active Record的架構轉儲程序無法處理數據庫特定的項目,如外鍵,約束,授權語句等。將數據庫格式更改為sql
而不是ruby
。 在您的application.rb文件中:
config.active_record.schema_format = :sql
這將使用特定於數據庫的工具將架構轉儲到db/structure.sql
。 例如,如果您使用的是PostgreSQL,它將使用pg_dump
來轉儲模式。 使用sql
格式的缺點是轉儲不再是數據庫不可知的。 如果您要從PostgreSQL遷移到MySQL,您將無法使用生成的結構文件來創建新數據庫。
您還可以使用rake命令生成sql轉儲:
rake db:structure:dump
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.