我正在努力让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 ,架构是正确的。有什么想法吗?
答案 0 :(得分:0)
尝试引用而不是belongs_to。 如果您使用referneces删除t.index:owner_id
答案 1 :(得分:0)
这个post帮助了我,我应该做的是 rake db:migrate:reset 。