module CustomRailsSettingsCached::ClassMethods
Public Instance Methods
build_custom_settings_methods(custom_settings)
click to toggle source
# File lib/custom_rails_settings_cached.rb, line 65 def build_custom_settings_methods(custom_settings) if custom_settings.is_a?(Array) # Exam: # CUSTOM_RAILS_SETTINGS_KEYS = [:google_analytics, :facebook_pixel_ads] custom_settings.each do |setting_key| if setting_key.is_a?(Symbol) self.define_method "#{setting_key}" do self.get_settings setting_key end self.define_method "#{setting_key}=" do |setting_value| self.init_setting(setting_key, setting_value) end else self.build_custom_settings_methods setting_key end end elsif custom_settings.is_a?(Hash) # Exam: # CUSTOM_RAILS_SETTINGS_KEYS = { # google_analytics: [:enabled, :tracking_code], # facebook_pixel_ads: [:enabled, :tracking_code] # } custom_settings.each do |k, v| if v.is_a?(Array) v.each do |setting_key| # Use: Partner.first.google_analytics_enabled store_setting_key = "#{k}_#{setting_key}" self.define_method store_setting_key do self.get_settings store_setting_key end # Use: Partner.first.google_analytics_enabled = true self.define_method "#{store_setting_key}=" do |setting_value| self.init_setting(store_setting_key, setting_value) end end elsif v.is_a?(Symbol) # Use: Partner.first.google_analytics self.define_method "#{v}" do self.get_settings v end self.define_method "#{v}=" do |setting_value| self.init_setting(v, setting_value) end end end end end