From bdc267b04478e874da432c6ca55e27a2ff0c1922 Mon Sep 17 00:00:00 2001 From: Skud Date: Tue, 23 Jul 2013 21:14:24 +1000 Subject: [PATCH] added slug for seeds --- app/models/seed.rb | 10 +++++++++- db/migrate/20130723110702_add_slug_to_seed.rb | 6 ++++++ db/schema.rb | 5 ++++- spec/models/seed_spec.rb | 5 +++++ 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20130723110702_add_slug_to_seed.rb diff --git a/app/models/seed.rb b/app/models/seed.rb index 842cebde8..bb39bf15b 100644 --- a/app/models/seed.rb +++ b/app/models/seed.rb @@ -1,6 +1,10 @@ class Seed < ActiveRecord::Base + extend FriendlyId + friendly_id :seed_slug, use: :slugged + attr_accessible :owner_id, :crop_id, :description, :quantity, :plant_before, - :tradable_to + :tradable_to, :slug + belongs_to :crop belongs_to :owner, :class_name => 'Member', :foreign_key => 'owner_id' @@ -19,4 +23,8 @@ class Seed < ActiveRecord::Base return true end end + + def seed_slug + "#{owner.login_name}-#{crop.system_name}".downcase.gsub(' ', '-') + end end diff --git a/db/migrate/20130723110702_add_slug_to_seed.rb b/db/migrate/20130723110702_add_slug_to_seed.rb new file mode 100644 index 000000000..684c2183e --- /dev/null +++ b/db/migrate/20130723110702_add_slug_to_seed.rb @@ -0,0 +1,6 @@ +class AddSlugToSeed < ActiveRecord::Migration + def change + add_column :seeds, :slug, :string + add_index :seeds, :slug, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index ce965a032..8263fb087 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 => 20130723103128) do +ActiveRecord::Schema.define(:version => 20130723110702) do create_table "account_types", :force => true do |t| t.string "name", :null => false @@ -243,6 +243,9 @@ ActiveRecord::Schema.define(:version => 20130723103128) do t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "tradable_to", :default => "nowhere" + t.string "slug" end + add_index "seeds", ["slug"], :name => "index_seeds_on_slug", :unique => true + end diff --git a/spec/models/seed_spec.rb b/spec/models/seed_spec.rb index 26b09f731..ce3088aa2 100644 --- a/spec/models/seed_spec.rb +++ b/spec/models/seed_spec.rb @@ -10,6 +10,11 @@ describe Seed do @seed.save.should be_true end + it "should have a slug" do + @seed.save + @seed.slug.should match(/member\d+-magic-bean/) + end + context 'quantity' do it 'allows integer quantities' do @seed = FactoryGirl.build(:seed, :quantity => 99)