From addd9cbddf79fcff0d95fd18f36b5d7e8e23727e Mon Sep 17 00:00:00 2001 From: Skud Date: Fri, 3 Jan 2014 21:50:41 +1100 Subject: [PATCH] Added search method to crops For now it just does a naive SQL LIKE query. We can make this fancier in future, if we want to. --- app/models/crop.rb | 7 +++++++ spec/models/crop_spec.rb | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/app/models/crop.rb b/app/models/crop.rb index 12c397613..3c92e02aa 100644 --- a/app/models/crop.rb +++ b/app/models/crop.rb @@ -147,4 +147,11 @@ class Crop < ActiveRecord::Base end end + # Crop.search(string) + # searches for crops whose names match the string given + # just uses SQL LIKE for now, but can be made fancier later + def self.search(query) + where("name LIKE ?", "%#{query}%") + end + end diff --git a/spec/models/crop_spec.rb b/spec/models/crop_spec.rb index 531145d96..7bf7b3162 100644 --- a/spec/models/crop_spec.rb +++ b/spec/models/crop_spec.rb @@ -243,4 +243,19 @@ describe Crop do end end + context "search" do + before :each do + @mushroom = FactoryGirl.create(:crop, :name => 'mushroom') + end + it "finds exact matches" do + Crop.search('mushroom').should eq [@mushroom] + end + it "finds approximate matches" do + Crop.search('mush').should eq [@mushroom] + end + it "doesn't find non-matches" do + Crop.search('mush').should_not include @crop + end + end + end