我想创建schema.sql而不是schema.rb.谷歌搜索后我发现可以通过设置sql架构格式来完成application.rb.所以我在application.rb中设置了以下内容
config.active_record.schema_format = :sql
Run Code Online (Sandbox Code Playgroud)
但是如果我将schema_format设置为:sql,则根本不会创建schema.rb/schema.sql.如果我在上面注释它创建schema.rb,但我需要schema.sql.我假设它将在其中转储数据库结构,我知道可以使用转储数据库结构
rake db:structure:dump
Run Code Online (Sandbox Code Playgroud)
但是我想在迁移数据库时自动完成它.
我有什么遗漏或假设错了吗?
我正在尝试访问Postgres 9.2数据库中列的默认值.通过使用原始SQL,我可以验证列默认为"users_next_id()":
> db = ActiveRecord::Base.connection
> db.execute("SELECT table_name,column_name,column_default
FROM information_schema.columns
WHERE table_name = 'users' and column_name ='id'").first
=> {"table_name"=>"users",
"column_name"=>"id",
"column_default"=>"users_next_id()"}
Run Code Online (Sandbox Code Playgroud)
但是当我使用AR的'columns'方法时,默认值似乎是nil:
[26] pry(main)> db.columns('users')[0]=> #<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x007feb397ba6e8
@coder=nil,
@default=nil,
@limit=8,
@name="id",
@null=false,
@precision=nil,
@primary=nil,
@scale=nil,
@sql_type="bigint",
@type=:integer>
Run Code Online (Sandbox Code Playgroud)
这不会导致任何问题(除了让我困惑),但这是预期的行为吗?我对"列"方法做出了错误的假设吗?