module ActiveScaffold::Core
Public Class Methods
active_record_column_type_cast(value, column_or_type)
click to toggle source
# File lib/active_scaffold/core.rb, line 274 def self.active_record_column_type_cast(value, column_or_type) return Time.zone.at(value.to_i) if value =~ /\A\d+\z/ && %i[time datetime].include?(column_or_type.type) 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 = '::')
click to toggle source
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 “#{model}Controller” syntax. You may override this method to customize the search routine.
# File lib/active_scaffold/core.rb, line 234 def self.active_scaffold_controller_for(klass, controller_namespace = '::') error_message = [] 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 => error # Only rescue NameError associated with the controller constant not existing - not other compile errors raise unless error.message["uninitialized constant #{controller}"] error_message << "#{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)
click to toggle source
# File lib/active_scaffold/core.rb, line 257 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)
click to toggle source
# File lib/active_scaffold/core.rb, line 3 def self.included(base) base.extend(ClassMethods) end
mongoid_column_type_cast(value, column)
click to toggle source
# File lib/active_scaffold/core.rb, line 269 def self.mongoid_column_type_cast(value, column) return Time.zone.at(value.to_i) if value =~ /\A\d+\z/ && [Time, DateTime].include?(column.type) column.type.evolve value end
Public Instance Methods
active_scaffold_config()
click to toggle source
# File lib/active_scaffold/core.rb, line 17 def active_scaffold_config @active_scaffold_config ||= begin setup_user_settings unless self.class.active_scaffold_config.user if ActiveScaffold.threadsafe self.class.active_scaffold_config.user else self.class.active_scaffold_config end end end
active_scaffold_session_storage(id = nil)
click to toggle source
# File lib/active_scaffold/core.rb, line 33 def active_scaffold_session_storage(id = nil) session_index = active_scaffold_session_storage_key(id) session[session_index] ||= {} session[session_index] end
active_scaffold_session_storage_key(id = nil)
click to toggle source
# File lib/active_scaffold/core.rb, line 28 def active_scaffold_session_storage_key(id = nil) id ||= params[:eid] || "#{params[:controller]}#{"_#{nested_parent_id}" if nested?}" "as:#{id}" end
setup_user_settings()
click to toggle source
# File lib/active_scaffold/core.rb, line 7 def setup_user_settings config = self.class.active_scaffold_config config.new_user_settings(user_settings_storage, params) return if ActiveScaffold.threadsafe config.actions.each do |action_name| conf_instance = config.send(action_name) rescue next # rubocop:disable Style/RescueModifier config.user.action_user_settings(conf_instance) end end
user_settings_storage()
click to toggle source
# File lib/active_scaffold/core.rb, line 39 def user_settings_storage if self.class.active_scaffold_config.store_user_settings active_scaffold_session_storage else {} end end