class Natural::ResourceGenerator

Public Instance Methods

generate_dependencies() click to toggle source
# 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