【问题标题】:In Rails filter all ActiveRecord calls在 Rails 中过滤所有 ActiveRecord 调用
【发布时间】:2013-07-02 09:42:28
【问题描述】:

我有一个适用于不同组织的用户的铁路应用程序。

我想建立一种机制,确保当用户从数据库中获取任何数据时,它只能来自他的组织。

即使我的查询中有错误,我也希望这是真的,即我希望这个过滤器独立于所有其他代码。

如何实现此过滤器以在所有 ActiveRecord 调用上运行?

我可以为此使用“default_scope”(http://apidock.com/rails/ActiveRecord/Scoping/Default/ClassMethods/default_scope),但如何将其应用于所有模型?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord


    【解决方案1】:

    对我来说,正确实现这一目标的唯一方法是将所有方法限定为类似

    user_organization.<relation>.<query>
    

    例如,您可以在 ApplicationController 中使用 user_organization 方法

    class ApplicationController < ActionController::Base
      def user_organization
        current_user.organization
      end
    end
    

    如果我没记错的话,默认范围不接受参数,我强烈建议你不要使用任何东西。

    【讨论】:

    • 我同意这是一个不错的方法,但我的目标是确保在任何情况下有人在查询中出错时都不会发生错误。
    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多