Как запретить выборку из вложенного ресурса в рельсах? - PullRequest
1 голос
/ 15 января 2012

У меня есть приложение rails, которое является мультитенантным. Он имеет ресурсы для учетной записи, клиента и транзакций. Учетная запись имеет много клиентов, имеет много транзакций. Я хочу убедиться, что я никогда не смогу случайно выполнить Client.find, Transaction.find и т. Д. (Все должно проходить через the_account.clients.find или client.transactions.find и т. Д.). Я хочу сделать это, чтобы случайно не показывать вещи не того пользователя с неправильной учетной записи, забыв сначала выбрать учетную запись.

Есть ли способ отключить Client.find (Client.find_by_name, Client.find_by_etc), но все же разрешить the_account.clients.find?

1 Ответ

0 голосов
/ 15 января 2012

Я не знаю, как полностью отключить Client.find, но я бы, вероятно, поместил метод в конец каждого из моих контроллеров Client и Transaction для поиска. Вот как будет выглядеть код клиента:

def collection
  if current_user.admin?
    Client.all
  else
    current_user.account.clients
  end
end

Затем, везде в моем контроллере я обычно использовал бы Client.find, вместо этого я бы подставил collection. Получает все нужные записи без риска передержки.

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