Как расширить модели в рельсах, чтобы всегда включать определенную область - PullRequest
1 голос
/ 26 июля 2011

В нашем мультитенантном приложении с общей базой данных я ищу способ расширения моделей, чтобы всегда включать область действия учетной записи как часть условий SQL при выполнении запроса.В идеале я бы расширил ActiveRecord, чтобы я мог включить что-то вроде scoped_by_account во все соответствующие модели.

Я искал в интернете и нашел один плагин, который утверждает, что делает именно это.К сожалению, часть поиска плагинов не работает, насколько я могу судить.Плагин (который можно найти здесь: https://github.com/mconnell/multi_tenant) расширяет ActiveRecord и использует следующий код для «вставки» дополнительного условия поиска в каждый поиск:

def self.unscoped
    ...
    super.apply_finder_options(:conditions => { account_id => Account.current.id })
end

Из того, что я могу сказать, этоне удается применить условие к всем поискам. Если я сделаю запрос Project.all, он вернет все результаты, игнорируя текущую учетную запись. Только если я использую Project.unscoped, это будет работатьправильно.

Мой вопрос:
Как я могу расширить ActiveRecord для включения моего дополнительного условия в каждый запрос, который он выполняет для этой модели?

Спасибо за ваше время,Эрвин

1 Ответ

0 голосов
/ 26 июля 2011

Вы ищете default_scope ?

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