Rails:Postgis不会创建普通列

时间:2014-12-10 13:26:38

标签: ruby-on-rails postgresql postgis

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

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 文件,它显示:

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 内容列。我通过使用 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 ,架构是正确的。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这个post帮助了我,我应该做的是 rake db:migrate:reset