Подобное более общее решение использует accessible_by(current_ability)
из cancancan gem (или другого решения для авторизации, например, pundit и т. Д.) Для тонкой настройки (под капотом он будет делать то же самое where(organization...
):
способность.rb:
can :manage, SomeModelName, organization_id: user.organization_id
can :read, SomeOtherModel, user_id: user.id
этот подход лучше, чем возможности жесткого кода в вашем коде, потому что при изменении правил доступа вам не придется снова просматривать весь код, чтобы изменить их.
Другоеспособ: На самом деле, вы можете сэкономить, изменяя все запросы с помощью default_scope
и нарушая принципы mvc, перенося current_user
в область действия модели, но я советую против этого - позже это может стать очень трудным для работы.