Commit cd79878

mo khan <mo@mokhan.ca>
2016-05-28 14:10:18
add home gym to profiles.
1 parent 95252de
app/controllers/profiles_controller.rb
@@ -14,7 +14,7 @@ class ProfilesController < ApplicationController
     profile = current_user.profile
     ActiveRecord::Base.transaction do
       if params[:home_gym_yelp_id].present?
-        profile.home_gym = Gym.create_from_yelp!(params[:home_gym_yelp_id])
+        profile.gym = Gym.create_from_yelp!(params[:home_gym_yelp_id])
       end
       profile.update(profile_params)
     end
app/models/profile.rb
@@ -1,5 +1,6 @@
 class Profile < ActiveRecord::Base
   belongs_to :user
+  belongs_to :gym
   enum social_tolerance: { low: 0, medium: 1, high: 2 }
   enum gender: { female: 0, male: 1, transgender: 2, other: nil }
   attr_accessor :home_gym
app/views/profiles/edit.html.erb
@@ -40,7 +40,5 @@
 </div>
 
 <script type="text/javascript" charset="utf-8">
-    new Stronglifters.HomeGym({
-      el: 'gym-search',
-    })
+  new Stronglifters.HomeGym({ el: 'gym-search' })
 </script>
db/migrate/20160528140323_add_home_gym_to_profiles.rb
@@ -0,0 +1,5 @@
+class AddHomeGymToProfiles < ActiveRecord::Migration
+  def change
+    add_reference :profiles, :gym, index: true, foreign_key: true, type: :uuid
+  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: 20160523151118) do
+ActiveRecord::Schema.define(version: 20160528140323) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -73,8 +73,10 @@ ActiveRecord::Schema.define(version: 20160523151118) do
     t.datetime "created_at",                       null: false
     t.datetime "updated_at",                       null: false
     t.string   "time_zone",        default: "UTC", null: false
+    t.uuid     "gym_id"
   end
 
+  add_index "profiles", ["gym_id"], name: "index_profiles_on_gym_id", using: :btree
   add_index "profiles", ["user_id"], name: "index_profiles_on_user_id", unique: true, using: :btree
 
   create_table "programs", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
@@ -136,6 +138,7 @@ ActiveRecord::Schema.define(version: 20160523151118) do
     t.datetime "updated_at", null: false
   end
 
+  add_foreign_key "profiles", "gyms"
   add_foreign_key "received_emails", "users"
   add_foreign_key "user_sessions", "users"
 end
spec/controllers/profiles_controller_spec.rb
@@ -50,6 +50,16 @@ describe ProfilesController do
         expect(user.profile.male?).to be_truthy
         expect(response).to redirect_to(profile_path(user.profile))
       end
+
+      it 'saves the users home gym' do
+        gym = create(:gym, yelp_id: 'sait-campus-centre-calgary')
+
+        patch :update, id: user.to_param,
+          profile: { time_zone: 'Alaska' },
+          home_gym_yelp_id: gym.yelp_id
+
+        expect(user.reload.profile.gym).to eql(gym)
+      end
     end
   end