module KonoUtils::Concerns::BaseEditing::ClassMethods
Public Instance Methods
setup_search(search_class: nil)
click to toggle source
@param [String] search_class
# File lib/kono_utils/concerns/base_editing.rb, line 304 def setup_search(search_class: nil) install_search_class(search_class) development_search_setup_checks before_action :load_search, only: [:index] end
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