wkdshot
wkdshot

Reputation: 256

Ruby on Rails / MVC - Splitting Views for different user levels

I have a Rails application which handles hotel room reservations. I would like an admin to see all reservations and specific users to only see their reservations. Is the 'proper' way of doing this:

  1. Create a new action for each user in the reservation controller

    OR

  2. Put an if statement in the index action, deciding whether to return all reservations or only those for a user id sent by parameter

I have it set up and working the second way but I'm not sure this is the correct way of doing things.

Upvotes: 0

Views: 141

Answers (1)

apchester
apchester

Reputation: 1144

I would do this by having a single view, which is populated by the appropriate collection of reservations. For an admin this would be all reservations, but for a regular user the collection would only contain their bookings.

This then requires a single if statement in the controller to ascertain the appropriate reservations:

if user.is_admin?
  @reservations = Reservation.all
else
  @reservations = user.reservations
end

The above code assumes that you've setup an appropriate relationship between a user and their reservations, but you get the idea.

Upvotes: 1

Related Questions