Class: Coalla::Cms::ScaffoldGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Utils::Scaffold
Defined in:
lib/generators/coalla/cms/scaffold_generator.rb

Instance Method Summary collapse

Methods included from Utils::Scaffold

#cms_select_name

Instance Method Details

#create_controllerObject



28
29
30
# File 'lib/generators/coalla/cms/scaffold_generator.rb', line 28

def create_controller
  template 'controllers/admin/scaffold_controller_template.rb.erb', "app/controllers/admin/#{@collection_name}_controller.rb"
end

#create_viewsObject



32
33
34
35
36
37
38
39
40
# File 'lib/generators/coalla/cms/scaffold_generator.rb', line 32

def create_views
  dir = 'views/admin/'
  empty_directory "app/#{dir}/#{@collection_name}"

  templates = %w{_form edit index new}
  templates.each do |t|
    template "#{dir}/scaffold_template/#{t}.html.haml.erb", "app/#{dir}/#{@collection_name}/#{t}.html.haml"
  end
end

#setup_namesObject



14
15
16
17
18
# File 'lib/generators/coalla/cms/scaffold_generator.rb', line 14

def setup_names
  @instance_name = name.underscore
  @collection_name = name.pluralize.underscore
  @class_name = name
end

#setup_routesObject



42
43
44
45
46
47
48
49
# File 'lib/generators/coalla/cms/scaffold_generator.rb', line 42

def setup_routes
  sentinel = /namespace :admin do\s*$/

  routing_code = "  resources :#{@collection_name}"
  in_root do
    inject_into_file 'config/routes.rb', "\n  #{routing_code}", { :after => sentinel, :verbose => false }
  end
end

#setup_table_columnsObject



20
21
22
23
24
25
26
# File 'lib/generators/coalla/cms/scaffold_generator.rb', line 20

def setup_table_columns
  a_class = name.constantize
  @table_columns = a_class.columns.reject{|c| [:id, :type, :created_at, :updated_at, :position].include?(c.name.to_sym) }.collect{|c| [c.name, c.type]}

  @reflections = {}
  a_class.reflections.values.find_all{|r| r.macro == :belongs_to}.each{|r| @reflections[r.foreign_key] = r}
end