【问题标题】:Which is the best way to deactivate an user account with ActiveRecord?使用 ActiveRecord 停用用户帐户的最佳方法是什么?
【发布时间】:2012-01-30 17:24:55
【问题描述】:

我有一个大问题,需要您的帮助,可以选择禁用具有多个依赖项的用户帐户。

我相信它没有魔法,但让我们看看能做什么:

我有一个名为User::Account 的模型,其中包含所有依赖项(has_manies、has_ones...),但是这些依赖项在整个系统中都使用,并且只有在存在或不存在这些记录的情况下才能正常工作。这些依赖项何时处于活动状态或处于非活动状态,无需定义任何内容。

但是我需要当模型User::Account 被定义为非活动状态(例如通过数据库中的列)时,所有这些依赖项也被禁用,就好像它们不存在一样,所以我不必更改整个系统的运行。或者是一种不那么痛苦的方式来实现它。

建议?

谢谢

【问题讨论】:

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


    【解决方案1】:

    在不了解更多细节的情况下,很难给出准确的建议, 但我建议您可能正在寻找before_filter

    类似的东西。

    class ApplicationController
    
      private
    
      def user_must_be_active!
        if !@user.active?
          flash[:error] = "User Account is not active"
          redirect_to user_profile_path
        end
      end
    
    end
    

    因此,在任何控制器中,我们都可以说用户必须处于活动状态

    class SomeController < ApplicationController
      before_filter :user_must_be_active!
    end
    

    或者也许只是我们关心的一些操作

    class SomeOtherController < ApplicationController
      before_filter :user_must_be_active!, :only => :some_action
    end
    

    【讨论】:

    • 我了解在整个系统中进行检查的可能性,确保依赖的父项存在以显示它等等。但是有没有更简单的方法?
    • 我建议您用您认为可行的方法更新您的问题,我们可以建议更好的方法。我的解决方案是关于用户的控制器级别权限。如果您试图在模型级别上获取“所有活跃用户的帖子”,我的答案会有所不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多