Files
nairobi/app/models/setting.rb
Julian Herrero 9ed6aae348 Refactor Setting model
- Make easier to group settings by using prefixes
- Add method to rename setting keys
- Add method to remove setting keys
2019-03-19 15:14:08 +01:00

45 lines
898 B
Ruby

class Setting < ActiveRecord::Base
validates :key, presence: true, uniqueness: true
default_scope { order(id: :asc) }
def type
prefix = key.split(".").first
if %w[feature process map html homepage].include? prefix
prefix
else
"configuration"
end
end
def enabled?
value.present?
end
class << self
def [](key)
where(key: key).pluck(:value).first.presence
end
def []=(key, value)
setting = where(key: key).first || new(key: key)
setting.value = value.presence
setting.save!
value
end
def rename_key(from:, to:)
if where(key: to).empty?
value = where(key: from).pluck(:value).first.presence
create!(key: to, value: value)
end
remove(from)
end
def remove(key)
setting = where(key: key).first
setting.destroy if setting.present?
end
end
end