我的数据库使用PostgreSQL。我在Mac上开发,需要这一行:
# db/schema.rb on Mac environment
enable_extension "plpgsql"
但是,Linux上不需要扩展名。
在这种情况下,我们应该忽略schema.rb并通过db:migrate为开发环境和生产环境生成吗?
答案 0 :(得分:2)
据我了解,问题是自动生成的schema.rb在生产和开发方面会有所不同,因此会导致git中的文件发生变化,因为这个额外的行。
postgres适配器在mac上生成的行吗?如果它是手动添加的,我会尝试将其放在其他地方,也许在初始化程序中(您可以通过此处的某些内容根据平台切换其使用情况:Detecting Operating Systems in Ruby)。
答案 1 :(得分:0)
我会一直使用迁移。 schema.rb
的缺点是只有红宝石。如果 - 由于某种原因 - 您在迁移中使用了纯SQL,可能使用BIGSERIAL
而不是SERIAL
左右,那么schema.rb
会出现问题。切换到基于SQL的模式转储只能解决问题的一部分,从而可能需要对数据进行必要的数据更正或数据播种。