关于postgresql:Rails:Postgis不会创建普通列

Rails: Postgis doesn't create normal columns

我正在尝试让Postgis在我的Rails应用程序中工作。 我使用迁移创建一个表,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
class CreatePosts < ActiveRecord::Migration
  def CHANGE
    create_table :posts do |t|
      t.point :location, geographic: TRUE
      t.belongs_to :owner, NULL: FALSE
      t.string :content
      t.timestamps

      t.index :owner_id
      t.index :location, spatial: TRUE
    END
  END
END

在rake db:migrate之后,我检查了schema.rb文件,它显示:

1
2
3
4
5
6
create_table"posts", force: TRUE do |t|
  t.spatial "location",   LIMIT: {:srid=>4326, :TYPE=>"point", :geographic=>TRUE}
  t.datetime"created_at"
  t.datetime"updated_at"
END
add_index"posts", ["location"], :name =>"index_posts_on_location", :spatial => TRUE

这意味着不会创建owner_id和content列。 我通过使用psql检查数据库进一步证实了这一点。 我在这做错了什么?

仅供参考,我正在使用Ruby v2.1.5p273,Rails v4.1.8,Postgresql 9.3和Postgresql repo的Postgis2。 我在CentOS 7上运行它们。

编辑:

看起来像rake db:reset不能达到我的预期。 如果我做rake db:drop; rake db:create; rake db:migrate,架构是正确的。 任何的想法?


这篇文章帮助了我,我真正应该做的是rake db:migrate:reset。


尝试引用而不是belongs_to。
如果您使用referneces删除t.index:owner_id