Ruby on rails 过滤之前Rails中应该有什么样的逻辑

Ruby on rails 过滤之前Rails中应该有什么样的逻辑,ruby-on-rails,filter,controller,Ruby On Rails,Filter,Controller,我应该在过滤器之前加载并检查DB源的存在吗 在我们的应用程序中,我们总是加载并检查DB源是否存在,该DB源的id由参数传入。我不确定这是不是一个好的模式 比如: 是的,查找记录并将其设置为实例变量是控制器筛选器的常见约定。不过,一般来说,为多个操作运行的任何代码都是一个很好的候选者。如果当前用户未登录,则表示希望重定向到登录页面 class UsersController < ApplicationController before_action :require_login be

我应该在过滤器之前加载并检查DB源的存在吗

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

比如:


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

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
class UsersController
是的,查找记录并将其设置为实例变量是控制器筛选器的常见约定。不过,一般来说,为多个操作运行的任何代码都是一个很好的候选者。如果当前用户未登录,则表示希望重定向到登录页面

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
class UsersController
是否尚未引发错误?在这种情况下,您的
资源\u not \u found
将根本无法执行。所以最好是删除它。这实际上是默认设置控制器的方式(第7行和第55行)。因此,这是一个相当体面的迹象,如果没有其他事情,这不是一个可怕的想法或做法things@vee
find
不会引发任何错误。如果找不到任何内容,它将返回
nil
。如果您想成为开发人员,最好的答案是:无:)@hiveer Rails的哪个版本?在Rails 5中,
find
肯定会引发
ActiveRecord::RecordNotFound
,如果记录不存在,是否还没有引发错误?在这种情况下,您的
资源\u not \u found
将根本无法执行。所以最好是删除它。这实际上是默认设置控制器的方式(第7行和第55行)。因此,这是一个相当体面的迹象,如果没有其他事情,这不是一个可怕的想法或做法things@vee
find
不会引发任何错误。如果找不到任何内容,它将返回
nil
。如果您想成为开发人员,最好的答案是:无:)@hiveer Rails的哪个版本?在Rails 5中,
find
肯定会引发
ActiveRecord::RecordNotFound
如果记录不存在,我不知道是谁做的。:)不管怎样,我投你的票。@hiveer lol谢谢:)当某件事被否决时,能得到一个评论是很好的,这样它就能得到改进。我觉得这是一个合理的答案,所以我很困惑。这个答案有用吗?是的,很有用。特别是你的解释。但是您知道身份验证案例是一个非常常见的用例。如果您可以从官方用例或官方解释文档中给出一些其他示例,那就太好了。@hiveer好的,我用指南中的一个示例替换了这个示例,我不知道是谁做的。:)不管怎样,我投你的票。@hiveer lol谢谢:)当某件事被否决时,能得到一个评论是很好的,这样它就能得到改进。我觉得这是一个合理的答案,所以我很困惑。这个答案有用吗?是的,很有用。特别是你的解释。但是您知道身份验证案例是一个非常常见的用例。如果您可以从官方用例或官方解释文档中给出一些其他示例,那就太好了。@hiveer好的,我用指南中的示例替换了这个示例