在过滤之前Rails中应该有什么样的逻辑

时间:2017-07-25 03:37:25

标签: ruby-on-rails filter controller

我应该在过滤之前加载并检查数据库源的存在吗?

在我们的应用程序中,我们总是加载并检查具有由params传入的id的DB源的存在。我不确定这是不是一个好的模式。

像:

before_action :set_org

private

def seg_org
  @org ||= Organization.find params[:id]
  resource_not_found unless @org
end

1 个答案:

答案 0 :(得分:0)

是的,查找记录并将其设置为实例变量是控制器过滤器的常见约定。一般来说,任何为多个动作运行的代码都是一个很好的候选者。如果当前用户未登录,则表示您要重定向到登录页面。

class UsersController < ApplicationController
  before_action :require_login
  before_action :set_user, only: [:show, :edit, :update, :destroy]

  private

  def require_login
    unless logged_in?
      flash[:error] = "You must be logged in to access this section"
      redirect_to new_login_url # halts request cycle
    end
  end

  def set_user
    @user = User.find(params[:id])
  end
end
相关问题