Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PostgreSQL point type in Rails migration

I want to use the point type which there's in PostgreSQL. I've done:

rails g model Test point:point

The resulting migration is:

class CreateTests < ActiveRecord::Migration
  def change
    create_table :tests do |t|
      t.point :point

      t.timestamps
    end
  end
end

When I run:

rake db:migrate

The result is:

    ==  CreateTests: migrating ====================================================
    -- create_table(:tests)
    rake aborted!
    An error has occurred, this and all later migrations canceled:

    undefined method `point' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0x000000038991a0>/home/i/Dropbox/programming/ruby/rails_pg_for_tests/db/migrate/20140306151700_create_tests.rb:4:in `block in change'
    /home/i/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/schema_statements.rb:184:in `create_table'
    /home/i/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-4.0.2/lib/active_record/migration.rb:625:in `block in method_missing'
    /home/i/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-4.0.2/lib/active_record/migration.rb:597:in `block in say_with_time'
...

May be I need to install PostGIS, but I don't understand what for, if I have point type in PostgreSQL. And I only need to store latitude and longitude without any other options.

How can I use this point type or what is better to use in this case?

Thank you.

like image 621
dortonway Avatar asked Mar 06 '14 15:03

dortonway


1 Answers

You can specify the data type as a string

t.column 'point', 'point'
like image 133
bridiver Avatar answered Sep 30 '22 16:09

bridiver