相关疑难解决方法(0)

即使在设置schema_format =:sql之后,schema.sql也无法创建

我想创建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)

但是我想在迁移数据库时自动完成它.

我有什么遗漏或假设错了吗?

schema ruby-on-rails ruby-on-rails-3

28
推荐指数
2
解决办法
8806
查看次数

如何使用ActiveRecord访问Postgres列的默认值?

我正在尝试访问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)

这不会导致任何问题(除了让我困惑),但这是预期的行为吗?我对"列"方法做出了错误的假设吗?

postgresql activerecord ruby-on-rails rails-activerecord

5
推荐指数
1
解决办法
934
查看次数