class Scaffold::Services::Controller
Public Class Methods
new(rails)
click to toggle source
# File lib/scaffold/services/controller.rb, line 4 def initialize rails @rails = rails end
Public Instance Methods
base_controller()
click to toggle source
# File lib/scaffold/services/controller.rb, line 21 def base_controller @rails.choice[:base_controller] || 'ApplicationController' end
class_name()
click to toggle source
example: Manage::BooksController
# File lib/scaffold/services/controller.rb, line 9 def class_name if self.namespaced? "#{self.namespaces_as_modules}::#{@rails.resource.class_name.pluralize}Controller" else "#{@rails.resource.class_name.pluralize}Controller" end end
file_name()
click to toggle source
# File lib/scaffold/services/controller.rb, line 17 def file_name "#{@rails.resource.class_name.tableize}_controller.rb" end
index_fields()
click to toggle source
which fields will be visible on the index page
# File lib/scaffold/services/controller.rb, line 52 def index_fields if @rails.choice[:index_fields].blank? @rails.resource.fields.keys else @rails.choice[:index_fields].collect{|field| field.split(':').first} end end
index_includes()
click to toggle source
# File lib/scaffold/services/controller.rb, line 30 def index_includes @rails.choice[:includes] end
index_joins()
click to toggle source
very bad idea to go so deep
# File lib/scaffold/services/controller.rb, line 26 def index_joins @rails.choice[:joins] end
namespaced?()
click to toggle source
# File lib/scaffold/services/controller.rb, line 34 def namespaced? namespaces_as_string.present? end
namespaces_as_modules()
click to toggle source
Admin::ClassRooms::Etc
# File lib/scaffold/services/controller.rb, line 39 def namespaces_as_modules puts "namespaces_as_path: #{namespaces_as_path}" puts "namespaces_as_path.join.camelize: #{namespaces_as_path.map(&:camelize).join('::')}" namespaces_as_path.map(&:camelize).join('::') end
namespaces_as_path()
click to toggle source
- 'admin', 'classrooms'
# File lib/scaffold/services/controller.rb, line 46 def namespaces_as_path (namespaces_as_string || "").split('/').collect{|name| name.underscore} end
permitted_fields()
click to toggle source
# File lib/scaffold/services/controller.rb, line 85 def permitted_fields associations_to_ids(@rails.resource.fields) end
permitted_search_fields()
click to toggle source
convert company => company_id Used in the index action
# File lib/scaffold/services/controller.rb, line 70 def permitted_search_fields fields = @rails.resource.fields to_ids = [] expanded_fields = expand_association_to_ids fields search_fields.each do |key| next unless expanded_fields.keys.include?(key) type = expanded_fields[key] to_ids << (['references', 'belongs_to'].include?(type.downcase) ? "#{key}_id" : key) end to_ids end
search_fields()
click to toggle source
# File lib/scaffold/services/controller.rb, line 60 def search_fields if @rails.choice[:search_fields].blank? @rails.resource.fields.keys else @rails.choice[:search_fields].collect{|field| field.split(':').first} end end
Private Instance Methods
associations_to_ids(hash)
click to toggle source
convert company => company_id
# File lib/scaffold/services/controller.rb, line 112 def associations_to_ids hash to_ids = {} hash.each_pair do |key, type| key_name = ['references', 'belongs_to'].include?(type.downcase) ? "#{key}_id" : key to_ids[key_name] = type end to_ids end
expand_association_to_ids(fields)
click to toggle source
if the field is belongs_to make so that fields contains the `field` and field_id
# File lib/scaffold/services/controller.rb, line 100 def expand_association_to_ids fields expanded = {} fields.each_pair do |name, type| case type when 'belongs_to' expanded["#{name}_id"] = 'integer' end end fields.merge(expanded) end
namespaces_as_string()
click to toggle source
admin/classrooms/etc
# File lib/scaffold/services/controller.rb, line 93 def namespaces_as_string @namespaces_as_path ||= @rails.choice[:controller_namespaces] end