2013-05-12 101 views
10

如果我正在編寫一個私有方法,那麼rails是否認爲單詞private下的每個方法都將是私有的?或者它應該只對第一種方法是私密的?Ruby on Rails私有方法?

private 

    def signed_in_user 
     redirect_to signin_url, notice: "Please sign in." unless signed_in? 
    end 

    def correct_user 
     @user = User.find(params[:id]) 
     redirect_to(root_path) unless current_user?(@user) 
    end 

意思signed_in_usercorrect_user是私有的?或者只是signed_in_user?這是否意味着每當我需要編寫私有方法時,它現在應該在我的文件末尾?

回答

3

是所有private下的方法是私有的。通常情況下,您會在文件底部找到這些方法。

但是你可以通過編寫像protected另一個關鍵字「停止」這一點,然後所有的方法下面將受到保護。

2

正如其他人寫的,每緊隨私人關鍵字的方法是用Ruby私人。這是簡單的Ruby語法,與rails無關。

private 
    ..... 
def pvt_meth_1 
    ..... 
end 

def pvt_meth_2 
    ..... 
end 

public 

def pub_meth_1 
    ...... 
end 
3

或者你甚至可以定義這樣你的訪問控制太,列出你的方法作爲參數傳遞給訪問控制功能(公共,保護,私有):

class SomeClass 
    def method1 
     ... 
    end 

    def method2 
     ... 
    end 

    def method3 
     ... 
    end 
    # ... more methods def 

    public :method1, method4 
    protected :method3 
    private :method2 
end