X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=app%2Fmodels%2Ffeed_item.rb;h=db0613da3827753d0ae08c5a77984926a8463974;hb=a3d41b1468861303edef7450ff1a7d5bc10dfbd6;hp=ce5b8c6c05e674dd46de604e79797cfdad41d305;hpb=87b29f4f401626c3b21df387cf7cd75677ea56cf;p=feedcatcher.git diff --git a/app/models/feed_item.rb b/app/models/feed_item.rb index ce5b8c6..db0613d 100644 --- a/app/models/feed_item.rb +++ b/app/models/feed_item.rb @@ -1,21 +1,22 @@ class FeedItem < ActiveRecord::Base - - require 'cgi' # needed for url decoding - validates_presence_of :feed_name, :title, :description + validates_uniqueness_of :title, :scope => :feed_name validate :feed_name_must_be_legal -protected + def FeedItem.valid_feed_name?(feed_name) + Rack::Utils::escape(feed_name) == feed_name and + Rack::Utils::unescape(feed_name) == feed_name and + feed_name != 'index' and + feed_name != 'show' and + feed_name != 'update' and + feed_name != 'action' + end + + private def feed_name_must_be_legal - if url_encode(feed_name) != feed_name or - CGI::unescape(feed_name) != feed_name or - feed_name == 'index' or - feed_name == 'show' or - feed_name == 'update' or - feed_name == 'action' - errors.add(:feed_name, 'is an invalid feed name') + unless FeedItem.valid_feed_name?(feed_name) + errors.add(:feed_name, 'is invalid') end end - end