From b39ee792b4b322a9bc30561c0668ef7ecb97ab04 Mon Sep 17 00:00:00 2001 From: Norman Ancajas Date: Mon, 5 Nov 2012 14:29:04 +0800 Subject: [PATCH] give each user a garden. note: tests broken! --- app/models/garden.rb | 6 +++++- app/models/user.rb | 3 ++- .../20121105052119_give_each_user_a_garden.rb | 15 +++++++++++++++ db/schema.rb | 2 +- spec/controllers/gardens_controller_spec.rb | 5 ++++- spec/migrations/give_each_user_a_garden.spec | 12 ++++++++++++ 6 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20121105052119_give_each_user_a_garden.rb create mode 100644 spec/migrations/give_each_user_a_garden.spec diff --git a/app/models/garden.rb b/app/models/garden.rb index de3493e5c..252264168 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -1,7 +1,11 @@ class Garden < ActiveRecord::Base extend FriendlyId - friendly_id :name, use: :slugged + friendly_id :garden_slug, use: :slugged attr_accessible :name, :slug, :user_id + belongs_to :user + def garden_slug + "#{user.username}-#{name}" + end end diff --git a/app/models/user.rb b/app/models/user.rb index b89adaa33..ed8a44c08 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,4 +1,6 @@ class User < ActiveRecord::Base + has_many :gardens + # Include default devise modules. Others available are: # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable @@ -24,5 +26,4 @@ class User < ActiveRecord::Base where(conditions).first end end - end diff --git a/db/migrate/20121105052119_give_each_user_a_garden.rb b/db/migrate/20121105052119_give_each_user_a_garden.rb new file mode 100644 index 000000000..02ae70ba9 --- /dev/null +++ b/db/migrate/20121105052119_give_each_user_a_garden.rb @@ -0,0 +1,15 @@ +class GiveEachUserAGarden < ActiveRecord::Migration + def up + User.all.each do |user| + garden = Garden.create(:name => 'My Garden', :user_id => user.id) + garden.save! + end + end + + def down + User.all.each do |user| + garden = Garden.find_by_name_and_user_id('My Garden', user.id) + garden.try(:destroy) + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 6c5cb802b..f0a9039c6 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 => 20121105035239) do +ActiveRecord::Schema.define(:version => 20121105052119) do create_table "crops", :force => true do |t| t.string "system_name", :null => false diff --git a/spec/controllers/gardens_controller_spec.rb b/spec/controllers/gardens_controller_spec.rb index e3a79d990..a35653a2a 100644 --- a/spec/controllers/gardens_controller_spec.rb +++ b/spec/controllers/gardens_controller_spec.rb @@ -20,11 +20,14 @@ require 'spec_helper' describe GardensController do + @user = User.create(:username => 'testuser', :email => 'testuser@example.com', :password => 'testuser' ) + @user.confirm! + # This should return the minimal set of attributes required to create a valid # Garden. As you add validations to Garden, be sure to # update the return value of this method accordingly. def valid_attributes - {:name => 'My Garden'} + {:name => 'My Garden', :user_id => @user.id } end # This should return the minimal set of values that should be in the session diff --git a/spec/migrations/give_each_user_a_garden.spec b/spec/migrations/give_each_user_a_garden.spec new file mode 100644 index 000000000..1c6972e54 --- /dev/null +++ b/spec/migrations/give_each_user_a_garden.spec @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe 'new gardens' do + it "should have 'my garden' for each user" do + (1..3).each do |i| + @user = User.find_by_username("test#{i}") + @garden = Garden.find(:name => "My Garden", :user_id => @user.id) + @garden.should_exist + @garden.slug.should == "test#{i}-my-garden" + end + end +end