我应该在过滤之前加载并检查数据库源的存在吗?
在我们的应用程序中,我们总是加载并检查具有由params传入的id的DB源的存在。我不确定这是不是一个好的模式。
像:
before_action :set_org
private
def seg_org
@org ||= Organization.find params[:id]
resource_not_found unless @org
end
答案 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