簡體   English   中英

schema.rb中沒有生成遷移代碼?

[英]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.

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