перезаписать результаты ассоциации - PullRequest
0 голосов
/ 11 февраля 2010

у меня 3 модели

пользователи, компании и роли

Пользователь принадлежит к роли Пользователь имеет и принадлежит ко многим компаниям Роль has_one Пользователь

Через эту ассоциацию я могу сделать что-то вроде:
User.companies <- я получаю все компании, которые есть у пользователя <br /> User.role <- я получаю роль, которой принадлежит пользователь_ </p>

Я думал сейчас, когда у пользователя role_id == 0 (admin), компании должны вернуть все компании (Company.all). Чтобы сделать это, я подумал переписать метод companies, и если у пользователя role_id == 0, я возвращаю Company.all, в противном случае я вызываю super. Это верно? Если да, как я должен реализовать этот код? Прямо в моей пользовательской модели? Должен ли я просто расширить массив?

1 Ответ

1 голос
/ 11 февраля 2010

Я бы сказал, создайте новый метод, companies_accessible, который определяет, к каким компаниям пользователь имеет доступ.

def companies_accessible
  role_id == 0 ? Company.all : companies
end

Нет необходимости загрязнять ваши существующие методы, особенно если вам позже потребуется определитькакими компаниями администратор действительно владеет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...