gpt4 book ai didi

ruby-on-rails - 迁移代码未在 schema.rb 中生成?

转载 作者:行者123 更新时间:2023-12-04 06:13:23 25 4
gpt4 key购买 nike

我不得不把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

关于ruby-on-rails - 迁移代码未在 schema.rb 中生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26586852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com