Class: ActiveScaffold::Config::Base::UserSettings

Inherits:
Object
  • Object
show all
Defined in:
lib/active_scaffold/config/base.rb

Direct Known Subclasses

Core::UserSettings

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(conf, storage, params, action = :base) ⇒ UserSettings

Returns a new instance of UserSettings.



85
86
87
88
89
90
91
92
93
# File 'lib/active_scaffold/config/base.rb', line 85

def initialize(conf, storage, params, action = :base)
  # the session hash relevant to this action
  @storage = storage
  # all the request params
  @params = params
  # the configuration object for this action
  @conf = conf
  @action = action.to_s
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) ⇒ Object



125
126
127
# File 'lib/active_scaffold/config/base.rb', line 125

def method_missing(name, *)
  proxy_to_conf?(name, true) ? @conf.send(name, *) : super
end

Class Method Details

.session_attr(*names) ⇒ Object

define setter and getter for names values will be saved in session if store_user_settings is enabled, in other case for current request only getter will return value set with setter, or value from conf



78
79
80
81
82
83
# File 'lib/active_scaffold/config/base.rb', line 78

def self.session_attr(*names)
  names.each do |name|
    define_method(name) { |value| self[name] = value }
    define_method(name) { key?(name) ? self[name] : @conf.send(name) }
  end
end

.user_attr(*names) ⇒ Object

define setter and getter for names values will be saved for current request only getter will return value set with setter, or value from conf



64
65
66
67
68
69
70
71
72
# File 'lib/active_scaffold/config/base.rb', line 64

def self.user_attr(*names)
  attr_writer(*names)

  names.each do |name|
    define_method(name) do
      instance_variable_defined?(:"@#{name}") ? instance_variable_get(:"@#{name}") : @conf.send(name)
    end
  end
end

Instance Method Details

#[](key) ⇒ Object



107
108
109
# File 'lib/active_scaffold/config/base.rb', line 107

def [](key)
  @storage[@action][key.to_s] if @action && @storage[@action]
end

#[]=(key, value) ⇒ Object



111
112
113
114
115
116
117
118
119
# File 'lib/active_scaffold/config/base.rb', line 111

def []=(key, value)
  @storage[@action] ||= {}
  if value.present?
    @storage[@action][key.to_s] = value
  else
    @storage[@action].delete key.to_s
    @storage.delete @action if @storage[@action].empty?
  end
end

#coreObject



99
100
101
# File 'lib/active_scaffold/config/base.rb', line 99

def core
  @conf.core.user
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/active_scaffold/config/base.rb', line 121

def key?(key)
  @storage[@action].key? key.to_s if @action && @storage[@action]
end

#label(model = nil) ⇒ Object



103
104
105
# File 'lib/active_scaffold/config/base.rb', line 103

def label(model = nil)
  @conf.label(model, core: core)
end

#proxy_to_conf?(name, include_all) ⇒ Boolean

Returns:

  • (Boolean)


133
134
135
# File 'lib/active_scaffold/config/base.rb', line 133

def proxy_to_conf?(name, include_all)
  name !~ /=$/ && @conf.respond_to?(name, include_all)
end

#respond_to_missing?(name, include_all = false) ⇒ Boolean

Returns:

  • (Boolean)


129
130
131
# File 'lib/active_scaffold/config/base.rb', line 129

def respond_to_missing?(name, include_all = false)
  proxy_to_conf?(name, include_all) || super
end

#userObject



95
96
97
# File 'lib/active_scaffold/config/base.rb', line 95

def user
  self
end