【问题标题】:Private method in application controller rails应用程序控制器 rails 中的私有方法
【发布时间】:2014-09-11 20:02:02
【问题描述】:

我正在关注《使用 Rails 进行敏捷开发》一书(http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549)。在第 9 章中,它在应用程序控制器中定义了一个私有方法:

class ApplicationController < ActionController::Base
    protect_from_forgery

    private

    def current_cart 
      Cart.find(session[:cart_id])
    rescue ActiveRecord::RecordNotFound
      cart = Cart.create
      session[:cart_id] = cart.id
     cart
   end
end

它说“这使得这个方法只对其他控制器可用,特别是它阻止了 Rails 让它作为控制器上的一个动作可用。”我想知道为什么这会使其他控制器可以使用私有方法?我知道私有方法只能在同一个类中访问。这背后有什么魔力吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    ruby 中的私有方法的工作方式与其他语言中的不同。在 ruby​​ 中,我们可以在声明它的类以及该类的所有子类中调用私有方法。这解释了为什么您可以在 ApplicationController 中声明一个私有方法并使其在所有其他控制器中可用,因为所有其他控制器都继承自 ApplicationController。

    有关更多信息,我建议研究 ruby​​ 访问控制。首先,有一篇很棒的文章here

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      相关资源
      最近更新 更多