Dans mon Rails, j’utilise Rubocop
pour rechercher des problèmes. Aujourd’hui, il m’a donné une erreur comme celle-ci: Assignment Branch Condition size for show is too high
. Voici mon code:
def show
@category = Category.friendly.find(params[:id])
@categories = Category.all
@search = @category.products.approved.order(updated_at: :desc).ransack(params[:q])
@products = @search.result.page(params[:page]).per(50)
rate
end
Qu'est-ce que cela signifie et comment puis-je résoudre ce problème?
La taille de la condition de branche d'assignation (ABC) est une mesure de la taille d'une méthode. Il est essentiellement déterminé en comptant le nombre de [~ # ~] a [~ # ~] ssignments, [ ~ # ~] b [~ # ~] et [~ # ~] c [~ # ~] déclarations traditionnelles. (plus de détail ..)
Pour réduire la taille de ABC, vous pouvez déplacer certaines de ces affectations vers des appels before_action:
before_action :fetch_current_category, only: [:show,:edit,:update]
before_action :fetch_categories, only: [:show,:edit,:update]
before_action :fetch_search_results, only: [:show,:edit,:update] #or whatever
def show
rate
end
private
def fetch_current_category
@category = Category.friendly.find(params[:id])
end
def fetch_categories
@categories = Category.all
end
def fetch_search_results
@search = category.products.approved.order(updated_at: :desc).ransack(params[:q])
@products = @search.result.page(params[:page]).per(50)
end