diff --git a/app/models/screened_url.rb b/app/models/screened_url.rb index 8603b397c..6191b2679 100644 --- a/app/models/screened_url.rb +++ b/app/models/screened_url.rb @@ -11,13 +11,16 @@ class ScreenedUrl < ActiveRecord::Base default_action :do_nothing - before_validation :strip_http + before_validation :normalize validates :url, presence: true, uniqueness: true validates :domain, presence: true - def strip_http - self.url.gsub!(/http(s?):\/\//i, '') + def normalize + if self.url + self.url.gsub!(/http(s?):\/\//i, '') + self.url.gsub!(/(\/)+$/, '') # trim trailing slashes + end end def self.watch(url, domain, opts={}) diff --git a/spec/models/screened_url_spec.rb b/spec/models/screened_url_spec.rb index 14229be65..60bb56d49 100644 --- a/spec/models/screened_url_spec.rb +++ b/spec/models/screened_url_spec.rb @@ -21,6 +21,14 @@ describe ScreenedUrl do described_class.create(valid_params.merge(url: url.gsub('http://', prefix))).url.should == url.gsub('http://', '') end end + + it "strips trailing slash" do + described_class.create(valid_params.merge(url: 'silverbullet.in/')).url.should == 'silverbullet.in' + end + + it "strips trailing slashes" do + described_class.create(valid_params.merge(url: 'silverbullet.in/buy///')).url.should == 'silverbullet.in/buy' + end end describe '#watch' do