我不得不把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这可以很好地工作,但是对于execute命令,db/schema.rb文件缺少这一行,它应该是创建数据库的权限。
是不是我遗漏了什么,或者这是生成schema.rb时的默认行为?
我可以通过在部署时忽略schema.rb并使用rake db:migrate生成表来绕过这个问题,但我看到了避免这样做的建议。
有什么想法吗?
发布于 2014-10-27 22:10:00
活动记录的架构转储程序无法处理特定于数据库的项,如外键、约束、授权语句等。请将数据库格式从ruby改为sql。在application.rb文件中:
config.active_record.schema_format = :sql这将使用特定于数据库的工具将模式转储到db/structure.sql。例如,如果您使用的是PostgreSQL,它将使用pg_dump转储模式。使用sql格式的缺点是转储不再是数据库不可知的。如果要从PostgreSQL迁移到MySQL,您将无法使用生成的结构文件来创建新数据库。
您还可以使用rake命令生成sql转储:
rake db:structure:dumphttps://stackoverflow.com/questions/26586852
复制相似问题