From bfd4e4f228b6528c17bba48f6d4529d11c160bb9 Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Thu, 17 Dec 2015 09:03:51 +0800 Subject: [PATCH] add permission service, add validations to map.rb --- app/models/map.rb | 11 ++++------- app/services/perm.rb | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 app/services/perm.rb diff --git a/app/models/map.rb b/app/models/map.rb index e6a10605..e45db636 100644 --- a/app/models/map.rb +++ b/app/models/map.rb @@ -13,6 +13,9 @@ class Map < ActiveRecord::Base #:full => ['940x630#', :png] }, :default_url => 'https://s3.amazonaws.com/metamaps-assets/site/missing-map.png' + validates_presence_of :name + validates_presence_of :arranged + validate_presence_of :permission # Validate the attached image is image/jpg, image/png, etc validates_attachment_content_type :screenshot, :content_type => /\Aimage\/.*\Z/ @@ -22,13 +25,7 @@ class Map < ActiveRecord::Base end def mk_permission - if self.permission == "commons" - "co" - elsif self.permission == "public" - "pu" - elsif self.permission == "private" - "pr" - end + Perm.short(permission) end #return an array of the contributors to the map diff --git a/app/services/perm.rb b/app/services/perm.rb new file mode 100644 index 00000000..7bded989 --- /dev/null +++ b/app/services/perm.rb @@ -0,0 +1,36 @@ +class Perm + class << self + # e.g. Perm::ISSIONS + ISSIONS = [:commons, :public, :private] + + def short(permission) + case permission + when :commons + "co" + when :public + "pu" + when :private + "pr" + else + fail "Invalid permission" + end + end + + def long(perm) + case perm + when "co" + :commons + when "pu" + :public + when "pr" + :private + else + fail "Invalid short permission" + end + end + + def valid?(permission) + ISSIONS.include? permission + end + end +end