У меня есть таблица с сотрудниками (идентификатор, имя, роль) и боссы таблицы отношений (employee_id, superior_id; оба Foreign_keys для employee.id для сотрудников).
Теперь, если сотрудник входит в систему, я хочу показать только его / ее сотрудников; администратор (role = admin) может видеть всех сотрудников.
Для администратора это просто:
Employee.find(:all) #to list them
Employee.find(params[:id] #to find one
Есть ли простой способ ограничить результаты только для моих сотрудников?
Как добавить всегда условие
where employees.id in
(select id from bosses where superior_id = #{User.current_user.employee})
если роль не является администратором.
Дополнительный комментарий
Не могли бы вы придумать более общее решение, когда каждый раз, когда вызывается метод find в активной записи, он проверяет current_user и возвращает только те элементы, которые он / она должен видеть?