diff --git a/app/models/hydrant.rb b/app/models/hydrant.rb index 6b2aa97..ec6d717 100644 --- a/app/models/hydrant.rb +++ b/app/models/hydrant.rb @@ -1,6 +1,7 @@ class Hydrant < ActiveRecord::Base validates_presence_of :lat, :lng belongs_to :user + has_many :reminders def self.find_closest(lat, lng, limit=50) query = <<-SQL diff --git a/app/models/reminder.rb b/app/models/reminder.rb new file mode 100644 index 0000000..834426f --- /dev/null +++ b/app/models/reminder.rb @@ -0,0 +1,6 @@ +class Reminder < ActiveRecord::Base + validates_presence_of :from_user, :to_user, :hydrant + belongs_to :from_user, :class_name => "User" + belongs_to :to_user, :class_name => "User" + belongs_to :hydrant +end diff --git a/app/models/user.rb b/app/models/user.rb index f5cafa2..4984501 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -3,4 +3,6 @@ class User < ActiveRecord::Base attr_accessible :email, :name, :organization, :voice_number, :sms_number, :password, :password_confirmation, :remember_me validates_presence_of :name has_many :hydrants + has_many :reminders_to, :class_name => "Reminder", :foreign_key => "to_user_id" + has_many :reminders_from, :class_name => "Reminder", :foreign_key => "from_user_id" end diff --git a/db/migrate/20110223180520_devise_create_users.rb b/db/migrate/00000000000001_devise_create_users.rb similarity index 89% rename from db/migrate/20110223180520_devise_create_users.rb rename to db/migrate/00000000000001_devise_create_users.rb index 2eecb79..a50f0bc 100644 --- a/db/migrate/20110223180520_devise_create_users.rb +++ b/db/migrate/00000000000001_devise_create_users.rb @@ -1,5 +1,5 @@ class DeviseCreateUsers < ActiveRecord::Migration - def self.up + def change create_table :users do |t| t.timestamps t.string :name, :null => false @@ -16,8 +16,4 @@ class DeviseCreateUsers < ActiveRecord::Migration add_index :users, :email, :unique => true add_index :users, :reset_password_token, :unique => true end - - def self.down - drop_table :users - end end diff --git a/db/migrate/20110223180521_create_hydrants.rb b/db/migrate/00000000000002_create_hydrants.rb similarity index 86% rename from db/migrate/20110223180521_create_hydrants.rb rename to db/migrate/00000000000002_create_hydrants.rb index 01d8bf2..870d7cc 100644 --- a/db/migrate/20110223180521_create_hydrants.rb +++ b/db/migrate/00000000000002_create_hydrants.rb @@ -1,5 +1,5 @@ class CreateHydrants < ActiveRecord::Migration - def self.up + def change create_table :hydrants do |t| t.timestamps t.string :name @@ -8,10 +8,7 @@ class CreateHydrants < ActiveRecord::Migration t.integer :city_id t.integer :user_id end + add_index :hydrants, :city_id, :unique => true end - - def self.down - drop_table :hydrants - end end diff --git a/db/migrate/00000000000003_create_reminders.rb b/db/migrate/00000000000003_create_reminders.rb new file mode 100644 index 0000000..d942ec5 --- /dev/null +++ b/db/migrate/00000000000003_create_reminders.rb @@ -0,0 +1,14 @@ +class CreateReminders < ActiveRecord::Migration + def change + create_table :reminders do |t| + t.timestamps + t.integer :from_user_id, :null => false + t.integer :to_user_id, :null => false + t.integer :hydrant_id, :null => false + end + + add_index :reminders, :from_user_id + add_index :reminders, :to_user_id + add_index :reminders, :hydrant_id + end +end diff --git a/db/schema.rb b/db/schema.rb index eaa487b..cf2216c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20110223180521) do +ActiveRecord::Schema.define(:version => 3) do create_table "hydrants", :force => true do |t| t.datetime "created_at" @@ -24,6 +24,18 @@ ActiveRecord::Schema.define(:version => 20110223180521) do add_index "hydrants", ["city_id"], :name => "index_hydrants_on_city_id", :unique => true + create_table "reminders", :force => true do |t| + t.datetime "created_at" + t.datetime "updated_at" + t.integer "from_user_id", :null => false + t.integer "to_user_id", :null => false + t.integer "hydrant_id", :null => false + end + + add_index "reminders", ["from_user_id"], :name => "index_reminders_on_from_user_id" + add_index "reminders", ["hydrant_id"], :name => "index_reminders_on_hydrant_id" + add_index "reminders", ["to_user_id"], :name => "index_reminders_on_to_user_id" + create_table "users", :force => true do |t| t.datetime "created_at" t.datetime "updated_at" diff --git a/test/fixtures/reminders.yml b/test/fixtures/reminders.yml new file mode 100644 index 0000000..15ef229 --- /dev/null +++ b/test/fixtures/reminders.yml @@ -0,0 +1,5 @@ +--- +reminder_1: + from_user: erik + to_user: dan + hydrant: hydrant_1 diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 966c684..de0e4f0 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -6,3 +6,12 @@ erik: voice_number: 1234567890 sms_number: 1234567890 encrypted_password: "$2a$10$KF/JMZ494ZLhWLgHZeBTf.cSL4l0Wjij4gIZP7BzkueAC1p4nW0ma" + +dan: + name: Dan Melton + organization: Code for America + email: dan@example.com + voice_number: 1234567890 + sms_number: 1234567890 + encrypted_password: "$2a$10$KF/JMZ494ZLhWLgHZeBTf.cSL4l0Wjij4gIZP7BzkueAC1p4nW0ma" +