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) ⇒ 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) ⇒ Object
[View source]
272 273 274 275 276 277 278 279 280 281 282 |
# File 'lib/active_scaffold/core.rb', line 272 def self.active_record_column_type_cast(value, column) return Time.zone.at(value.to_i) if value =~ /\A\d+\z/ && %i[time datetime].include?(column.type) if Rails.version < '5.0' column.type_cast_from_user value elsif column.type.respond_to? :cast # jruby-jdbc and rails 5 column.type.cast value else cast_type = ActiveRecord::Type.lookup column.type cast_type ? cast_type.cast(value) : value end 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.
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
# File 'lib/active_scaffold/core.rb', line 234 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 => error # Only rescue NameError associated with the controller constant not existing - not other compile errors raise unless error.["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 ' + .join(' or '), caller end |
.column_type_cast(value, column) ⇒ Object
[View source]
257 258 259 260 261 262 263 264 265 |
# 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?(Mongoid) && column.is_a?(Mongoid::Fields::Standard) mongoid_column_type_cast(value, column) else value end end |
.included(base) ⇒ Object
[View source]
3 4 5 |
# File 'lib/active_scaffold/core.rb', line 3 def self.included(base) base.extend(ClassMethods) end |
.mongoid_column_type_cast(value, column) ⇒ Object
[View source]
267 268 269 270 |
# File 'lib/active_scaffold/core.rb', line 267 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 |
Instance Method Details
#active_scaffold_config ⇒ Object
[View source]
17 18 19 20 21 22 23 24 25 26 |
# 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) ⇒ Object
[View source]
33 34 35 36 37 |
# 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) ⇒ Object
[View source]
28 29 30 31 |
# 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 ⇒ Object
[View source]
7 8 9 10 11 12 13 14 15 |
# 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 ⇒ Object
[View source]
39 40 41 42 43 44 45 |
# 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 |