diff --git a/app/controllers/gardens_controller.rb b/app/controllers/gardens_controller.rb index c8d91b39a..b0f37c3d6 100644 --- a/app/controllers/gardens_controller.rb +++ b/app/controllers/gardens_controller.rb @@ -40,7 +40,7 @@ class GardensController < ApplicationController # POST /gardens # POST /gardens.json def create - params[:garden][:member_id] = current_member.id + params[:garden][:owner_id] = current_member.id @garden = Garden.new(params[:garden]) respond_to do |format| diff --git a/app/models/garden.rb b/app/models/garden.rb index 03e91b7ab..ed8f38244 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -2,15 +2,12 @@ class Garden < ActiveRecord::Base extend FriendlyId friendly_id :garden_slug, use: :slugged - attr_accessible :name, :slug, :member_id - belongs_to :member + attr_accessible :name, :slug, :owner_id + belongs_to :owner, :class_name => 'Member', :foreign_key => 'owner_id' def garden_slug formatted_name = name.downcase.gsub(' ', '-') - "#{member.login_name}-#{formatted_name}" + "#{owner.login_name}-#{formatted_name}" end - def owner - return member - end end diff --git a/app/models/member.rb b/app/models/member.rb index d9fd61d8c..8f2548d8b 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -2,8 +2,8 @@ class Member < ActiveRecord::Base extend FriendlyId friendly_id :login_name, use: :slugged - has_many :posts, :foreign_key => 'author_id' - has_many :gardens + has_many :posts, :foreign_key => 'author_id' + has_many :gardens, :foreign_key => 'owner_id' # Include default devise modules. Others available are: # :token_authenticatable, :confirmable, @@ -26,7 +26,7 @@ class Member < ActiveRecord::Base :accept => true # Give each new member a default garden - after_create {|member| Garden.new(:name => "Garden", :member_id => member.id).save } + after_create {|member| Garden.create(:name => "Garden", :owner_id => member.id) } # allow login via either login_name or email address def self.find_first_by_auth_conditions(warden_conditions) diff --git a/app/models/planting.rb b/app/models/planting.rb index 3160507e7..b09399095 100644 --- a/app/models/planting.rb +++ b/app/models/planting.rb @@ -5,10 +5,10 @@ class Planting < ActiveRecord::Base belongs_to :crop def location - return "#{garden.member.login_name}'s #{garden.name}" + return "#{garden.owner.login_name}'s #{garden.name}" end def owner - return garden.member + return garden.owner end end diff --git a/app/views/gardens/show.html.haml b/app/views/gardens/show.html.haml index 3e698a153..07e47cbc2 100644 --- a/app/views/gardens/show.html.haml +++ b/app/views/gardens/show.html.haml @@ -6,7 +6,7 @@ %h4= "#{@garden.owner}'s gardens" %ul - - @garden.member.gardens.each do |othergarden| + - @garden.owner.gardens.each do |othergarden| %li - if @garden == othergarden = @garden.name diff --git a/app/views/plantings/_form.html.haml b/app/views/plantings/_form.html.haml index a2755976f..52c432fe7 100644 --- a/app/views/plantings/_form.html.haml +++ b/app/views/plantings/_form.html.haml @@ -12,7 +12,7 @@ .control-group = f.label 'Where did you plant it?', :class => 'control-label' .controls= collection_select(:planting, :garden_id, - Garden.where(:member_id => current_member), :id, :name, :selected => @garden.id) + Garden.where(:owner_id => current_member), :id, :name, :selected => @garden.id) .control-group = f.label 'When?', :class => 'control-label' .controls= f.date_select :planted_at, options = { :include_blank => true }, html_options = { :class => "span1" } diff --git a/db/migrate/20130113095802_rename_garden_member_to_owner.rb b/db/migrate/20130113095802_rename_garden_member_to_owner.rb new file mode 100644 index 000000000..e6dbb0df5 --- /dev/null +++ b/db/migrate/20130113095802_rename_garden_member_to_owner.rb @@ -0,0 +1,5 @@ +class RenameGardenMemberToOwner < ActiveRecord::Migration + def change + rename_column :gardens, :member_id, :owner_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 30424ec54..9c3cef982 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130113081521) do +ActiveRecord::Schema.define(:version => 20130113095802) do create_table "crops", :force => true do |t| t.string "system_name", :null => false @@ -26,13 +26,13 @@ ActiveRecord::Schema.define(:version => 20130113081521) do create_table "gardens", :force => true do |t| t.string "name", :null => false - t.integer "member_id" + t.integer "owner_id" t.string "slug", :null => false t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end - add_index "gardens", ["member_id"], :name => "index_gardens_on_user_id" + add_index "gardens", ["owner_id"], :name => "index_gardens_on_user_id" add_index "gardens", ["slug"], :name => "index_gardens_on_slug", :unique => true create_table "members", :force => true do |t| diff --git a/spec/controllers/gardens_controller_spec.rb b/spec/controllers/gardens_controller_spec.rb index a613c2da6..3acc630f6 100644 --- a/spec/controllers/gardens_controller_spec.rb +++ b/spec/controllers/gardens_controller_spec.rb @@ -8,7 +8,7 @@ describe GardensController do # Garden. As you add validations to Garden, be sure to # update the return value of this method accordingly. def valid_attributes - {:name => 'My Garden', :member_id => 1 } + {:name => 'My Garden', :owner_id => 1 } end # This should return the minimal set of values that should be in the session diff --git a/spec/controllers/plantings_controller_spec.rb b/spec/controllers/plantings_controller_spec.rb index 4032ecb27..e750cc289 100644 --- a/spec/controllers/plantings_controller_spec.rb +++ b/spec/controllers/plantings_controller_spec.rb @@ -45,7 +45,7 @@ describe PlantingsController do it "picks up garden from params" do member = FactoryGirl.create(:member) - garden = FactoryGirl.create(:garden, :member => member) + garden = FactoryGirl.create(:garden, :owner => member) get :new, {:garden_id => garden.id}, valid_session assigns(:garden).should eq(garden) end diff --git a/spec/factories/garden.rb b/spec/factories/garden.rb index a316a8ab3..2feba4306 100644 --- a/spec/factories/garden.rb +++ b/spec/factories/garden.rb @@ -1,6 +1,6 @@ FactoryGirl.define do factory :garden do name 'My Garden' - member + owner end end diff --git a/spec/factories/member.rb b/spec/factories/member.rb index cc7c44bb5..4c6607237 100644 --- a/spec/factories/member.rb +++ b/spec/factories/member.rb @@ -1,6 +1,6 @@ FactoryGirl.define do - factory :member, aliases: [:author] do + factory :member, aliases: [:author, :owner] do login_name 'member1' password 'password1' email 'member1@example.com' diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb index b95d9c9f4..e3a436cde 100644 --- a/spec/models/garden_spec.rb +++ b/spec/models/garden_spec.rb @@ -2,8 +2,8 @@ require 'spec_helper' describe Garden do before :each do - @member = FactoryGirl.create(:member) - @garden = FactoryGirl.create(:garden, :member => @member) + @owner = FactoryGirl.create(:member) + @garden = FactoryGirl.create(:garden, :owner => @owner) end it "should have a slug" do diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 9257e0664..fc952729a 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -4,7 +4,7 @@ describe 'member' do context 'valid member' do before(:each) do - @member = FactoryGirl.create(:member) + @member = FactoryGirl.build(:member) end it 'should save a basic member' do @@ -34,6 +34,12 @@ describe 'member' do @post = FactoryGirl.create(:post, :author => @member) @member.posts.should eq [@post] end + + it 'should be able to fetch gardens' do + @member.save + @member.gardens.first.name.should eq "Garden" + end + end context 'no TOS agreement' do diff --git a/spec/models/planting_spec.rb b/spec/models/planting_spec.rb index 15ba87570..1414b7a0c 100644 --- a/spec/models/planting_spec.rb +++ b/spec/models/planting_spec.rb @@ -4,8 +4,8 @@ describe Planting do before(:each) do @crop = FactoryGirl.create(:tomato) - @member = FactoryGirl.create(:member) - @garden = FactoryGirl.create(:garden, :member => @member) + @member = FactoryGirl.create(:member) + @garden = FactoryGirl.create(:garden, :owner => @member) @planting = FactoryGirl.create(:planting, :crop => @crop, :garden => @garden) end diff --git a/spec/views/gardens/edit.html.haml_spec.rb b/spec/views/gardens/edit.html.haml_spec.rb index 15e310d7c..72ed49865 100644 --- a/spec/views/gardens/edit.html.haml_spec.rb +++ b/spec/views/gardens/edit.html.haml_spec.rb @@ -11,9 +11,9 @@ describe "gardens/edit" do context "logged in" do before(:each) do - @member = FactoryGirl.create(:member) - sign_in @member - @garden = assign(:garden, FactoryGirl.create(:garden, :member => @member)) + @owner = FactoryGirl.create(:member) + sign_in @owner + @garden = assign(:garden, FactoryGirl.create(:garden, :owner => @owner)) render end diff --git a/spec/views/gardens/index.html.haml_spec.rb b/spec/views/gardens/index.html.haml_spec.rb index 0c01ed4c8..6ae024a95 100644 --- a/spec/views/gardens/index.html.haml_spec.rb +++ b/spec/views/gardens/index.html.haml_spec.rb @@ -2,10 +2,10 @@ require 'spec_helper' describe "gardens/index" do before(:each) do - @member = FactoryGirl.create(:member) + @owner = FactoryGirl.create(:member) assign(:gardens, [ - FactoryGirl.create(:garden, :member => @member), - FactoryGirl.create(:garden, :member => @member) + FactoryGirl.create(:garden, :owner => @owner), + FactoryGirl.create(:garden, :owner => @owner) ]) end diff --git a/spec/views/gardens/show.html.haml_spec.rb b/spec/views/gardens/show.html.haml_spec.rb index fc5cbb551..591c610dd 100644 --- a/spec/views/gardens/show.html.haml_spec.rb +++ b/spec/views/gardens/show.html.haml_spec.rb @@ -2,8 +2,8 @@ require 'spec_helper' describe "gardens/show" do before(:each) do - @member = FactoryGirl.create(:member) - @garden = assign(:garden, FactoryGirl.create(:garden, :member => @member)) + @owner = FactoryGirl.create(:member) + @garden = assign(:garden, FactoryGirl.create(:garden, :owner => @owner)) end context 'logged out' do @@ -16,7 +16,7 @@ describe "gardens/show" do context 'signed in' do before :each do - sign_in @member + sign_in @owner render end diff --git a/spec/views/members/show.html.haml_spec.rb b/spec/views/members/show.html.haml_spec.rb index 1153b0d45..70fb9c91f 100644 --- a/spec/views/members/show.html.haml_spec.rb +++ b/spec/views/members/show.html.haml_spec.rb @@ -39,12 +39,12 @@ describe "members/show" do context "member has a garden" do before(:each) do - @member.gardens.create(:name => 'My Garden', :member_id => @member.id) + FactoryGirl.create(:garden, :owner => @member) render end it "displays a garden, if the member has one" do - rendered.should contain "My Garden" + rendered.should contain "Garden" end end diff --git a/spec/views/plantings/edit.html.haml_spec.rb b/spec/views/plantings/edit.html.haml_spec.rb index 695b56f33..15f754d48 100644 --- a/spec/views/plantings/edit.html.haml_spec.rb +++ b/spec/views/plantings/edit.html.haml_spec.rb @@ -12,7 +12,7 @@ describe "plantings/edit" do ) @crop = FactoryGirl.create(:crop) - @garden = FactoryGirl.create(:garden, :member => @right_member) + @garden = FactoryGirl.create(:garden, :owner => @right_member) @planting = assign(:planting, FactoryGirl.create(:planting, :garden => @garden, :crop => @crop) diff --git a/spec/views/plantings/index.html.haml_spec.rb b/spec/views/plantings/index.html.haml_spec.rb index 95f7cdcdd..901ae4508 100644 --- a/spec/views/plantings/index.html.haml_spec.rb +++ b/spec/views/plantings/index.html.haml_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe "plantings/index" do before(:each) do @member = FactoryGirl.create(:member) - @garden = FactoryGirl.create(:garden, :member => @member) + @garden = FactoryGirl.create(:garden, :owner => @member) @tomato = FactoryGirl.create(:tomato) @maize = FactoryGirl.create(:maize) assign(:recent_plantings, [ diff --git a/spec/views/plantings/new.html.haml_spec.rb b/spec/views/plantings/new.html.haml_spec.rb index 0bd2a65a0..c9ec1aeef 100644 --- a/spec/views/plantings/new.html.haml_spec.rb +++ b/spec/views/plantings/new.html.haml_spec.rb @@ -5,8 +5,8 @@ describe "plantings/new" do @member = FactoryGirl.create(:member) # create gardens and crops to populate dropdowns - @garden1 = FactoryGirl.create(:garden, :member => @member, :name => 'Garden1') - @garden2 = FactoryGirl.create(:garden, :member => @member, :name => 'Garden2') + @garden1 = FactoryGirl.create(:garden, :owner => @member, :name => 'Garden1') + @garden2 = FactoryGirl.create(:garden, :owner => @member, :name => 'Garden2') @crop1 = FactoryGirl.create(:tomato) @crop2 = FactoryGirl.create(:maize) diff --git a/spec/views/plantings/show.html.haml_spec.rb b/spec/views/plantings/show.html.haml_spec.rb index 8592f6558..bcb3a1eb8 100644 --- a/spec/views/plantings/show.html.haml_spec.rb +++ b/spec/views/plantings/show.html.haml_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe "plantings/show" do before(:each) do @member = FactoryGirl.create(:member) - @garden = FactoryGirl.create(:garden, :member => @member) + @garden = FactoryGirl.create(:garden, :owner => @member) @crop = FactoryGirl.create(:tomato) @planting = assign(:planting, FactoryGirl.create(:planting, :garden => @garden, :crop => @crop)