diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb deleted file mode 100644 index 0958fdf04..000000000 --- a/app/controllers/settings_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class SettingsController < ApplicationController - -end diff --git a/app/models/setting.rb b/app/models/setting.rb index 7c457d7b3..3bdda2a0c 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -1,3 +1,4 @@ class Setting < ActiveRecord::Base belongs_to :setting_group + validates :code, uniqueness: { scope: :setting_group_id } end diff --git a/config/locales/en.yml b/config/locales/en.yml index a55e39c28..1fcbfb07b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -64,6 +64,10 @@ en: invalid: 'IPv4 is invalid' ipv6: invalid: 'IPv6 is invalid' + setting: + attributes: + code: + taken: 'Code already exists' attributes: domain: name: 'Domain name' diff --git a/config/routes.rb b/config/routes.rb index 09a32a0dc..2c796e367 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,6 @@ Rails.application.routes.draw do end resources :setting_groups - resources :settings # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb index d079011f3..5aaa13b50 100644 --- a/spec/models/setting_spec.rb +++ b/spec/models/setting_spec.rb @@ -2,4 +2,20 @@ require "rails_helper" describe Setting do it { should belong_to(:setting_group) } + + it 'validates code uniqueness' do + sg = Fabricate(:setting_group) + sg.settings.build(code: 'this_is_code') + expect(sg.save).to be true + + sg.settings.build(code: 'this_is_code') + expect(sg.save).to be false + err = sg.settings.last.errors[:code].first + expect(err).to eq('Code already exists') + + sg_2 = Fabricate(:setting_group) + + sg_2.settings.build(code: 'this_is_code') + expect(sg_2.save).to be true + end end