2016-11-22 2 views
0

は私がrubocopでissue checkスタイルを嫌うには?高すぎる

hospitals = Hospital.order(created_at: :desc).group(:id) 
hospitals = hospitals.joins(medical_subjects: :sicks).where("(medical_subjects.name LIKE ? OR sicks.name LIKE ?) AND hospitals.name LIKE ?" , 
                  "%#{params[:freeword_medical_subject_sick_name].strip}%" , 
                  "%#{params[:freeword_medical_subject_sick_name].strip}%" , 
                  "%#{params[:freeword_hospital_name].strip}%") if params[:freeword_medical_subject_sick_name].present? 
hospitals = hospitals.joins(prefecture: [:cities, :stations]).where("cities.name LIKE ? OR stations.name LIKE ?" , 
                        "%#{params[:freeword_city_station_name]}%" , 
                        "%#{params[:freeword_city_station_name].strip}%") if params[:freeword_city_station_name].present? 
hospitals = hospitals.where(["hospitals.name LIKE ?" , "%#{params[:freeword_hospital_name].strip}%"]) if params[:freeword_hospital_name] 
hospitals = hospitals.where(woman_doctor_existed: params[:woman_doctor_existed]) if params[:woman_doctor_existed].present? 
hospitals = hospitals.where(emergency_enabled: params[:emergency_enabled]) if params[:emergency_enabled].present? 
hospitals = hospitals.where(checkup_enabled: params[:checkup_enabled]) if params[:checkup_enabled].present? 
hospitals = hospitals.where(dpc_enabled: params[:dpc_enabled]) if params[:dpc_enabled].present? 
hospitals = hospitals.where(parking_enabled: params[:parking_enabled]) if params[:parking_enabled].present? 
hospitals = hospitals.where(card_enabled: params[:card_enabled]) if params[:card_enabled].present? 
hospitals = hospitals.where(newest_medicine_enabled: params[:newest_medicine_enabled]) if params[:newest_medicine_enabled].present? 
hospitals = hospitals.page(params[:page]) 
hospitals 

以下のように一緒に接続された複数の条件や複数のパネルを使用して検索機能を持っていますが、私は、検索サイズのため、このファイル

  • 割り当て分岐条件をrubocop実行するときには、いくつかのエラーに会いました。
  • 検索のCyclomatic CompLexityが高すぎます。
  • メソッド行が多すぎます。 [14/10]は、検索のための
  • 知覚複雑さが

はそれを解決するためのいずれかの解決策がありますが高すぎますか? 読んでいただきありがとうございました。英語が良くないです。

答えて

0

1つの方法でたくさんのことをしていると言われています。あなたはそれを小さな方法に分解することができます。別のアイデアは、複製の一部を削除することです。たとえば、いくつかのパラメータが存在する場合、WHERE句を頻繁に追加します。次のようなものを考えてみましょう:

%i(woman_doctor_existed emergency_enabled checkup_enabled more...).each do |key| 
    hospitals = hospitals.where(key => params[key]) if params.has? key 
end 
関連する問題