2013-01-22 121 views
0

我正在查看示例Rails應用程序並查看一些奇怪的事情。那麼對我來說很奇怪,因爲我過去的經歷是用C#。控制器中的方法

所以在ApplicationController我有一個「私人」的方法是這樣的:

private 

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

,然後在orders_controller類我有另一種方法,在它的身上跟它一樣的東西:

def new 
    @cart = current_curt 
// .... 
end 

發生了什麼事?這是私人的,但我們可以訪問它?在訪問它之前,我們不需要創建它的一個實例?有人可以談談一些關於控制器中的方法如何在Rails中一起工作的問題嗎?

+3

看看這個問題:http://stackoverflow.com/questions/3534449/why-does-ruby-have-both-private-and-protected-methods。基本上'private'方法可用於子類,它更像其他語言中的'protected'。 –

回答

2

There is該控制器的一個實例,由框架實例化,按請求。

是的,子類可以訪問該方法(運行它會顯示)。

+0

啊好的電話,我沒有注意到在頂部它說CartsController是繼承自ApplicationContorller。 – Bohn