Class: Natural::ResourceGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/natural/resource/resource_generator.rb

Instance Method Summary collapse

Instance Method Details

#generate_dependenciesObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/generators/natural/resource/resource_generator.rb', line 8

def generate_dependencies
  @model_name = name if @model_name.blank?
  invoke 'pundit:policy', [@model_name.singularize]
  invoke 'controller', [name.pluralize]

  c_sentinel = '< ApplicationController'

  # Add resource reference to generated controller
  in_root do
    gsub_file "app/controllers/#{name.pluralize}_controller.rb", /(#{Regexp.escape(c_sentinel)})/mi do |match|
      "#{match}\n  resource :#{@model_name.pluralize.downcase}\n\n  def resource_params\n    params.require(:#{@model_name.singularize}).permit()\n  end\n"
    end
  end

  # Add note to generated Pundit policy
  in_root do
    gsub_file "app/policies/#{@model_name.singularize}_policy.rb", /(def resolve\n\s+scope\n\s+end)/mi do |match|
      '# See ApplicationPolicy.rb to see how a scope is defined and used'
    end
  end
end