В нашем мультитенантном приложении с общей базой данных я ищу способ расширения моделей, чтобы всегда включать область действия учетной записи как часть условий 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 для включения моего дополнительного условия в каждый запрос, который он выполняет для этой модели?
Спасибо за ваше время,Эрвин