|
|
Line 2: |
Line 2: |
|
| |
|
| ===Description of the project=== | | ===Description of the project=== |
| The questionnaires controller had several issues; this project aimed to address some of them, including:
| | There are some code smells detected by the code climate. These violate many of the ruby/rails best practices and needs to be rectified. |
|
| |
|
| * Remove or move logic that should reside elsewhere, e.g. in a model class.
| | all files in app/controllers/ with names beginning with A through N, except assignment_controller.rb |
| * Remove logic and references to logic that is no longer being used.
| |
| | |
| ===Files modified in the project===
| |
| # app/controllers/questionnaires_controller.rb
| |
| # app/views/questionnaires/_questionnaire.html.erb
| |
| # app/views/questionnaires/edit_questionnaire.html.erb (deleted)
| |
| # spec/controllers/questionnaires_controller_spec.rb
| |
| | |
| ===Issues and Improvements===
| |
| | |
| ====The ''assign_instructor_id'' method====
| |
| | |
| =====Problems=====
| |
| This method had two issues:
| |
| # Its name was misleading because it did not actually assign a value; it simply obtained a value from the user in the session.
| |
| # It was delving into implementation details of the ''User'' class.
| |
| | |
| =====Solution=====
| |
| The equivalent logic was already implemented in the ''User'' class's ''instructor_id'' method, so calls to the ''assign_instructor_id'' method were simply replaced with:
| |
| <pre>
| |
| session[:user].instructor_id
| |
| </pre>
| |
| | |
| A description in ''spec/controllers/questionnaires_controller_spec.rb'' was updated to reflect that ''assign_instructor_id'' was no longer in scope. | |
| | |
| ====The ''export'' and ''import'' methods====
| |
| | |
| =====Problems=====
| |
| These methods were actually no longer being used, because the functionality they provided was moved to the ''export_file'' and ''import_file'' routes.
| |
| | |
| =====Solution=====
| |
| * The logic was triggered by the presence of the parameters ''import'' or ''export'' in the ''save_all_questions'' action. Code that caused these parameters to be present had been commented out of ''_questionnaire.html.erb'' and ''edit_questionnaire.html.erb'' in the questionnaire views. The latter file was no longer reachable, as there was no reference to an ''edit_questionnaire'' action in ''config/routes.rb'' or any direct references to it in the questionnaires controller itself. Thus the commented-out code was removed from ''_questionnaire.html.erb'' and the ''edit_questionnaire.html.erb'' file was deleted.
| |
| * The logic referencing the parameters and methods was removed from the ''save_all_questions'' method.
| |