module SmartSettings::Querying
Public Instance Methods
all()
click to toggle source
# File lib/smart_settings/querying.rb, line 35 def all return new.all if setting_names.any? files = Dir.glob(Rails.root.join('app', 'settings', '*.rb')) files = files.map { |file| file.to_s.split('/').last.sub('_settings.rb', '') } where(var: files) end
find(*var)
click to toggle source
# File lib/smart_settings/querying.rb, line 10 def find(*var) return find_by_var!(var.first) unless var.size > 1 results = where(var: var) raise_record_not_found_exception!(var) if results.blank? end
find_by_var(var)
click to toggle source
# File lib/smart_settings/querying.rb, line 17 def find_by_var(var) setting = setting_class(var).safe_constantize setting.nil? ? nil : setting.new end
find_by_var!(var)
click to toggle source
# File lib/smart_settings/querying.rb, line 22 def find_by_var!(var) setting = find_by_var(var) setting.nil? ? raise_record_not_found_exception!(var) : setting end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/smart_settings/querying.rb, line 44 def method_missing(method, *args, &block) setting = find_by_var(method) setting.nil? ? super : setting end
raise_record_not_found_exception!(ids)
click to toggle source
# File lib/smart_settings/querying.rb, line 51 def raise_record_not_found_exception!(ids) vars = ids.is_a?(Array) ? "(#{ids.join(', ')})" : ids error = "Couldn't find Settings with var: #{vars}" raise ActiveRecord::RecordNotFound.new(error, 'Settings', 'var') end
setting_class(var)
click to toggle source
# File lib/smart_settings/querying.rb, line 6 def setting_class(var) "#{var}_settings".camelize end
where(options = {})
click to toggle source
# File lib/smart_settings/querying.rb, line 27 def where(options = {}) vars = Hash[options][:var] return all if vars.nil? classes = Array(vars).map { |var| setting_class(var).safe_constantize } classes.reject(&:nil?).map { |setting| setting.new } end