Commit 517a55e3

mo khan <mo@mokhan.ca>
2014-09-27 14:42:07
create locations table.
1 parent de403f3
app/models/location.rb
@@ -1,4 +1,6 @@
-class Location
+class Location < ActiveRecord::Base
+  belongs_to :locatable, polymorphic: true
+
   GEO_IP=GeoIP.new('config/GeoLiteCity.dat')
 
   class << self
db/migrate/20140927141151_create_locations.rb
@@ -0,0 +1,13 @@
+class CreateLocations < ActiveRecord::Migration
+  def change
+    create_table :locations, id: :uuid do |t|
+      t.integer :locatable_id
+      t.string :locatable_type
+      t.string :latitude
+      t.string :longitude
+      t.string :city
+      t.string :country
+      t.timestamps
+    end
+  end
+end
db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20140920033516) do
+ActiveRecord::Schema.define(version: 20140927141151) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -31,8 +31,8 @@ ActiveRecord::Schema.define(version: 20140920033516) do
 
   create_table "avatars", force: true do |t|
     t.integer  "user_id"
-    t.datetime "created_at",        null: false
-    t.datetime "updated_at",        null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
     t.string   "avatar"
     t.boolean  "avatar_processing"
     t.string   "avatar_tmp"
@@ -85,8 +85,8 @@ ActiveRecord::Schema.define(version: 20140920033516) do
     t.datetime "failed_at"
     t.string   "locked_by"
     t.string   "queue"
-    t.datetime "created_at",             null: false
-    t.datetime "updated_at",             null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
@@ -103,8 +103,19 @@ ActiveRecord::Schema.define(version: 20140920033516) do
 
   create_table "interests", force: true do |t|
     t.string   "name"
-    t.datetime "created_at", null: false
-    t.datetime "updated_at", null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+  end
+
+  create_table "locations", id: :uuid, default: "uuid_generate_v4()", force: true do |t|
+    t.integer  "locatable_id"
+    t.string   "locatable_type"
+    t.string   "latitude"
+    t.string   "longitude"
+    t.string   "city"
+    t.string   "country"
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "photos", force: true do |t|
@@ -146,13 +157,15 @@ ActiveRecord::Schema.define(version: 20140920033516) do
     t.integer "taggings_count", default: 0
   end
 
+  add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree
+
   create_table "tutorials", force: true do |t|
     t.string   "heading"
     t.text     "description"
     t.string   "url"
     t.integer  "user_id"
-    t.datetime "created_at",  null: false
-    t.datetime "updated_at",  null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
     t.string   "image_url"
     t.string   "author"
     t.string   "author_url"
@@ -181,12 +194,12 @@ ActiveRecord::Schema.define(version: 20140920033516) do
   add_index "user_sessions", ["user_id"], name: "index_user_sessions_on_user_id", using: :btree
 
   create_table "users", force: true do |t|
-    t.string   "email",                              default: "", null: false
-    t.string   "encrypted_password",     limit: 128, default: "", null: false
+    t.string   "email",                  default: "", null: false
+    t.string   "encrypted_password",     default: "", null: false
     t.string   "reset_password_token"
     t.datetime "reset_password_sent_at"
     t.datetime "remember_created_at"
-    t.integer  "sign_in_count",                      default: 0
+    t.integer  "sign_in_count",          default: 0
     t.datetime "current_sign_in_at"
     t.datetime "last_sign_in_at"
     t.string   "current_sign_in_ip"
@@ -205,13 +218,13 @@ ActiveRecord::Schema.define(version: 20140920033516) do
     t.datetime "confirmed_at"
     t.datetime "confirmation_sent_at"
     t.string   "unconfirmed_email"
-    t.integer  "failed_attempts",                    default: 0
+    t.integer  "failed_attempts",        default: 0
     t.string   "unlock_token"
     t.datetime "locked_at"
     t.string   "authentication_token"
     t.string   "invitation_token"
     t.string   "full_address"
-    t.integer  "creations_count",                    default: 0
+    t.integer  "creations_count",        default: 0
     t.boolean  "admin"
   end
 
spec/models/location_spec.rb
@@ -0,0 +1,14 @@
+require 'rails_helper'
+
+describe Location do
+  describe "#create" do
+    it 'can create a new location' do
+      location = Location.create!(latitude: '100', longitude: '100', city: 'Calgary', country: 'Canada')
+      expect(location).to_not be_nil
+      expect(location.latitude).to eql('100')
+      expect(location.longitude).to eql('100')
+      expect(location.city).to eql('Calgary')
+      expect(location.country).to eql('Canada')
+    end
+  end
+end