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.



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

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, *args) ⇒ Object



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

def method_missing(name, *args)
  proxy_to_conf?(name, true) ? @conf.send(name, *args) : 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



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

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



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

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



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

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

#[]=(key, value) ⇒ Object



106
107
108
109
110
111
112
113
114
# File 'lib/active_scaffold/config/base.rb', line 106

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



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

def core
  @conf.core.user
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


116
117
118
# File 'lib/active_scaffold/config/base.rb', line 116

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

#proxy_to_conf?(name, include_all) ⇒ Boolean

Returns:

  • (Boolean)


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

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)


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

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

#userObject



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

def user
  self
end