2013-05-12 20 views
10

Jeśli piszę metodę prywatną, czy szyny uważają, że każda metoda pod słowem private będzie prywatna? lub czy ma być tylko prywatna dla pierwszej metody?Ruby on Rails Private Methods?

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 

to znaczy signed_in_user i correct_user jest prywatne? lub po prostu signed_in_user? Czy to oznacza, że ​​kiedykolwiek muszę pisać prywatne metody, powinno to być teraz na końcu mojego pliku?

Odpowiedz

3

Tak wszystkie metody w ramach private są prywatne. Zwykle znajdziesz te metody na dole pliku.

Ale można "zatrzymać", pisząc inne słowo kluczowe, takie jak protected, a następnie wszystkie następujące metody będą chronione.

2

Jak inni napisali, że każdy sposób natychmiast następuje prywatną słowa kluczowego jest prywatny w Ruby. Jest to prosta składnia Ruby i nie ma nic wspólnego z szynami.

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

def pvt_meth_2 
    ..... 
end 

public 

def pub_meth_1 
    ...... 
end 
3

lub można nawet określić swoją kontrolę dostępu w ten sposób zbyt, wymieniając swoje metody jako argumenty do funkcji kontroli dostępu (public, protected prywatny):

class SomeClass 
    def method1 
     ... 
    end 

    def method2 
     ... 
    end 

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

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