2013-05-12 3 views
10

Если я пишу частный метод, рельсы считают, что каждый метод под словом 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_user и correct_user является частным? или просто signed_in_user? Означает ли это, когда мне нужно писать частные методы, это должно быть в конце моего файла сейчас?

ответ

3

Да все методы под private являются частными. Обычно вы найдете эти методы в нижней части файла.

Но вы можете «остановить» это, написав другое ключевое слово, например protected, а затем все последующие методы будут защищены.

10

Да, каждый метод после ключевого слова private будет закрыт. Если вы хотите вернуться к определению неличных методов, вы можете использовать другое ключевое слово, например public или protected.

См Where to place private methods in Ruby?

2

Как уже написано, каждый метод, который следует частное ключевое слово сразу частное в Ruby. Это простой синтаксис Ruby и не имеет ничего общего с рельсами.

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