Module: ActiveScaffold::Core
- Defined in:
- lib/active_scaffold/core.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
- .active_record_column_type_cast(value, column_or_type) ⇒ Object
-
.active_scaffold_controller_for(klass, controller_namespace = '::') ⇒ Object
Tries to find a controller for the given ActiveRecord model.
- .column_type_cast(value, column) ⇒ Object
- .included(base) ⇒ Object
- .mongoid_column_type_cast(value, column) ⇒ Object
Instance Method Summary collapse
- #active_scaffold_config ⇒ Object
- #active_scaffold_session_storage(id = nil) ⇒ Object
- #active_scaffold_session_storage_key(id = nil) ⇒ Object
- #setup_user_settings ⇒ Object
- #user_settings_storage ⇒ Object
Class Method Details
.active_record_column_type_cast(value, column_or_type) ⇒ Object
281 282 283 284 285 286 |
# File 'lib/active_scaffold/core.rb', line 281 def self.active_record_column_type_cast(value, column_or_type) return Time.zone.at(value.to_i) if i[time datetime].include?(column_or_type.type) && value =~ /\A\d+\z/ cast_type = column_or_type.is_a?(ActiveRecord::ConnectionAdapters::Column) ? ActiveRecord::Type.lookup(column_or_type.type) : column_or_type cast_type ? cast_type.cast(value) : value end |
.active_scaffold_controller_for(klass, controller_namespace = '::') ⇒ Object
Tries to find a controller for the given ActiveRecord model. Searches in the namespace of the current controller for singular and plural versions of the conventional “#modelController” syntax. You may override this method to customize the search routine.
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/active_scaffold/core.rb', line 238 def self.active_scaffold_controller_for(klass, controller_namespace = '::') = [] class_names = [klass.to_s, klass.to_s.demodulize].map { |k| k.underscore.pluralize }.map { |k| [k, k.singularize] }.flatten [controller_namespace, ''].each do |namespace| class_names.each do |controller_name| begin controller = "#{namespace}#{controller_name.camelize}Controller".constantize rescue NameError => e # Only rescue NameError associated with the controller constant not existing - not other compile errors raise unless e.["uninitialized constant #{controller}"] << "#{namespace}#{controller_name.camelize}Controller" next end raise ActiveScaffold::ControllerNotFound, "#{controller} missing ActiveScaffold", caller unless controller.uses_active_scaffold? unless controller.active_scaffold_config.model.to_s == klass.to_s raise ActiveScaffold::ControllerNotFound, "ActiveScaffold on #{controller} is not for #{klass} model.", caller end return controller end end raise ActiveScaffold::ControllerNotFound, "Could not find #{error_message.join(' or ')}", caller end |
.column_type_cast(value, column) ⇒ Object
263 264 265 266 267 268 269 270 271 272 273 |
# File 'lib/active_scaffold/core.rb', line 263 def self.column_type_cast(value, column) if defined?(ActiveRecord) && column.is_a?(ActiveRecord::ConnectionAdapters::Column) active_record_column_type_cast(value, column) elsif defined?(ActiveModel) && column.is_a?(ActiveModel::Attribute) active_record_column_type_cast(value, column.type) elsif defined?(Mongoid) && column.is_a?(Mongoid::Fields::Standard) mongoid_column_type_cast(value, column) else value end end |
.included(base) ⇒ Object
5 6 7 |
# File 'lib/active_scaffold/core.rb', line 5 def self.included(base) base.extend(ClassMethods) end |
.mongoid_column_type_cast(value, column) ⇒ Object
275 276 277 278 279 |
# File 'lib/active_scaffold/core.rb', line 275 def self.mongoid_column_type_cast(value, column) return Time.zone.at(value.to_i) if [Time, DateTime].include?(column.type) && value =~ /\A\d+\z/ column.type.evolve value end |
Instance Method Details
#active_scaffold_config ⇒ Object
14 15 16 17 18 19 |
# File 'lib/active_scaffold/core.rb', line 14 def active_scaffold_config @active_scaffold_config ||= begin setup_user_settings unless self.class.active_scaffold_config.user self.class.active_scaffold_config.user end end |
#active_scaffold_session_storage(id = nil) ⇒ Object
26 27 28 29 |
# File 'lib/active_scaffold/core.rb', line 26 def active_scaffold_session_storage(id = nil) session_index = active_scaffold_session_storage_key(id) session[session_index] ||= {} end |
#active_scaffold_session_storage_key(id = nil) ⇒ Object
21 22 23 24 |
# File 'lib/active_scaffold/core.rb', line 21 def active_scaffold_session_storage_key(id = nil) id ||= params[:eid] || "#{params[:controller]}#{"_#{nested_parent_id}" if nested?}" "as:#{id}" end |
#setup_user_settings ⇒ Object
9 10 11 12 |
# File 'lib/active_scaffold/core.rb', line 9 def setup_user_settings config = self.class.active_scaffold_config config.new_user_settings(user_settings_storage, params) end |
#user_settings_storage ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/active_scaffold/core.rb', line 31 def user_settings_storage if self.class.active_scaffold_config.store_user_settings active_scaffold_session_storage else {} end end |