哪个是使用ActiveRecord停用用户帐户的最佳方法?

时间:2012-01-30 17:24:55

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

我遇到了一个大问题,希望得到您的帮助,可以选择禁用具有多个依赖关系的用户帐户。

我相信它没有魔力,但让我们看看可以做些什么:

我有一个名为User::Account的模型,其中包含所有依赖项(has_manies,has_ones ...),但这些依赖项在整个系统中使用,一切都适用于这些记录的存在与否。当这些依赖项处于活动或非活动状态时,无需定义任何内容。

但是我需要在模型User::Account被定义为非活动时(例如通过DB中的列),所有这些依赖项也被禁用,就好像它们不存在一样,所以我没有改变系统的整个操作。或者是一种不太痛苦的方法来实现它。

建议?

由于

1 个答案:

答案 0 :(得分:2)

如果不了解更多细节,很难给出确切的建议, 但我建议你可能正在寻找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