module KonoUtils::Concerns::BaseEditing::ClassMethods

Public Instance Methods

setup_search_controller(search_class: nil) click to toggle source
# File lib/kono_utils/concerns/base_editing.rb, line 313
def setup_search_controller(search_class: nil)
  install_search_class(search_class)
  development_search_setup_checks

  # Sul controller della ricerca, ridefiniamo la classe base, im modo che vada a trovare il modello della
  # classe di ricerca
  redefine_method :base_class do
    self.search_class.search_model
  end

end

Protected Instance Methods

development_search_setup_checks() click to toggle source

Funzione che esegue un check generale sulle configurazioni del setup della ricerca per semplificare la vita allo sviluppatore. Vengono fatti i controlli solamente nell'env di sviluppo

# File lib/kono_utils/concerns/base_editing.rb, line 341
def development_search_setup_checks
  if ::Rails.env.development?
    out = []
    if self.respond_to?(:search_class)
      # controlliamo le rotte:
      unless self.search_class.new.search_form_builder.search_path
        out << "- Non hai definito la rotta per il controller della ricerca, inserisci nelle rotte del progetto:
                    namespace :#{self.search_class.search_model.name.to_s.pluralize.downcase } do
                      resources :searches, :only => [:index, :create]
                    end
                  ATTENZIONE deve essere sopra alla rotta della risorsa, altrimenti verrĂ  mechata prima la
                  show del controller principale
                  ------------------
                  Oppure la classe specializzata del search_form_builder non ritorna correttamente una path"
      end
      #controlliamo pundit
      policy = Pundit::PolicyFinder.new(self.search_class).policy
      if policy
        unless policy.included_modules.include?(KonoUtils::BaseSearchFormPolicyConcern)
          out << "- Nella policy #{policy.name} non hai incluso il concern: KonoUtils::BaseSearchFormPolicyConcern"
        end
      else
        out << "- Non hai definito la policy per la classe #{self.search_class.name}"
      end


    else
      out << "- Il controller deve rispondere al methodo search_class ritornando una classe figlia di
                KonoUtils::BaseSearch oppure configurarlo con il setup passato il valore al parametro
                search_class"
    end

    raise out.join("\n") unless out.empty?
  end
end
install_search_class(search_class_name = nil) click to toggle source
# File lib/kono_utils/concerns/base_editing.rb, line 327
def install_search_class(search_class_name = nil)
  # se passata la classe,
  if search_class_name
    define_singleton_method :search_class do
      search_class_name.to_s.constantize
    end
    delegate :search_class, to: :class
  end
end