E1914 Refactor users controller: Difference between revisions
(Created page with "This page is still being edited by the project team members.") |
(Added content) |
||
Line 1: | Line 1: | ||
This page is | This is an Expertiza based OSS Project. | ||
== Problems with the users_controller == | |||
1) The users_controller.rb file included the standard CRUD methods for a User model along with methods for other workflows. <br> | |||
2) The users_controller.rb file handled the creation and management of a RequestedUser object.<br> | |||
3) The file also included a few methods which have a bad name or lack documentation. | |||
== Solutions to the problems == | |||
=== Separate all methods related to the workflow of a RequestedUser object === | |||
The RequestedUser model was renamed to AccountRequest. | |||
A new controller was created called the account_requests_controller. | |||
The following methods were moved from users_controller to account_requests_controller.<br> | |||
1) created_approved_user<br> | |||
2) list_pending_requested<br> | |||
3) request_new<br> | |||
4) created_requested_user_record<br> | |||
5) roles_for_request_sign_up<br> | |||
6) requested_user_params<br> | |||
=== Edit this para === | |||
The form that is currently displayed when the “Request Account” button is clicked from the Expertiza login page needs to be edited | |||
Only instructor accounts can be created, so the dropdown must be removed | |||
All form labels must be bold-faced | |||
The “Self Introduction” label must be re-named to “Self-Introduction” | |||
The textbox for the self-introduction field must include some kind of hint (e.g: “Please include a link to your website”) | |||
=== Writing comments to make methods more understandable === | |||
====Wrote comments for the methods foreign. The comments include:==== | |||
1) What the method does: This method is used to find the list of roles the current user can embody.<br> | |||
2) Where the method is used: Used to display a drop-down selection of roles for the current user in the views.<br> | |||
====Wrote comments for the show and show_selection methods:==== | |||
1) What the method does: <br> | |||
2) Scenarios in which show_selection is called: in users/list.html.erb, a list of users is shown. On top of the list there is a functionality to search the list. When a person searches for a particular student, and selects that student, the show_selection method is called. If the person is allowed to see that student, the user is directed to the show() method. Otherwise the person stays on the list view.<br> | |||
3) Scenarios in which show() is called: From the edit.html.erb, if the person wants to see the information instead of editing it. From show_selection() as described above.<br> | |||
=== Renaming methods to reflect their actual behavior === | |||
The get_role method was named more like it would be in Java. It was renamed to 'role' because that is how it would be named in ruby. | |||
We chose to keep the method in the controller instead of moving it to the model because it does not alter the data structure and it also has selection logic. | |||
=== Paginating the list of users === | |||
3. The paginate_list method is supposed to paginate the list of users. However, the list of users is currently not paginated. This is probably because this method is not being called in the right place. |
Revision as of 21:27, 24 March 2019
This is an Expertiza based OSS Project.
Problems with the users_controller
1) The users_controller.rb file included the standard CRUD methods for a User model along with methods for other workflows.
2) The users_controller.rb file handled the creation and management of a RequestedUser object.
3) The file also included a few methods which have a bad name or lack documentation.
Solutions to the problems
The RequestedUser model was renamed to AccountRequest.
A new controller was created called the account_requests_controller.
The following methods were moved from users_controller to account_requests_controller.
1) created_approved_user
2) list_pending_requested
3) request_new
4) created_requested_user_record
5) roles_for_request_sign_up
6) requested_user_params
Edit this para
The form that is currently displayed when the “Request Account” button is clicked from the Expertiza login page needs to be edited Only instructor accounts can be created, so the dropdown must be removed All form labels must be bold-faced The “Self Introduction” label must be re-named to “Self-Introduction” The textbox for the self-introduction field must include some kind of hint (e.g: “Please include a link to your website”)
Writing comments to make methods more understandable
Wrote comments for the methods foreign. The comments include:
1) What the method does: This method is used to find the list of roles the current user can embody.
2) Where the method is used: Used to display a drop-down selection of roles for the current user in the views.
Wrote comments for the show and show_selection methods:
1) What the method does:
2) Scenarios in which show_selection is called: in users/list.html.erb, a list of users is shown. On top of the list there is a functionality to search the list. When a person searches for a particular student, and selects that student, the show_selection method is called. If the person is allowed to see that student, the user is directed to the show() method. Otherwise the person stays on the list view.
3) Scenarios in which show() is called: From the edit.html.erb, if the person wants to see the information instead of editing it. From show_selection() as described above.
Renaming methods to reflect their actual behavior
The get_role method was named more like it would be in Java. It was renamed to 'role' because that is how it would be named in ruby. We chose to keep the method in the controller instead of moving it to the model because it does not alter the data structure and it also has selection logic.
Paginating the list of users
3. The paginate_list method is supposed to paginate the list of users. However, the list of users is currently not paginated. This is probably because this method is not being called in the right place.