2013-05-12 26 views
10

Nếu tôi đang viết một phương pháp riêng tư, đường ray có nghĩ rằng mọi phương thức theo từ private sẽ là riêng tư? hoặc nó được cho là chỉ riêng tư cho phương pháp đầu tiên?Phương thức riêng tư của 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 

điều đó có nghĩa là signed_in_usercorrect_user là riêng tư? hoặc chỉ signed_in_user? Điều đó có nghĩa là bất cứ khi nào tôi cần viết các phương pháp riêng tư, nó phải ở cuối tập tin của tôi bây giờ?

Trả lời

3

Có tất cả các phương pháp dưới private là riêng tư. Thông thường, bạn sẽ, thực sự, tìm thấy những phương pháp ở dưới cùng của tập tin của bạn.

Nhưng bạn có thể "ngừng" điều này bằng cách viết một từ khóa khác như protected và sau đó tất cả các phương pháp sau sẽ được bảo vệ.

10

Có, mỗi phương pháp sau từ khóa private sẽ là riêng tư. Nếu bạn muốn thay đổi lại để xác định các phương pháp không phải riêng tư, bạn có thể sử dụng một từ khóa khác, chẳng hạn như public hoặc protected.

Xem Where to place private methods in Ruby?

2

Như những người khác đã viết, Mỗi phương pháp mà theo từ khóa tin ngay lập tức là tư nhân trong Ruby. Đây là cú pháp Ruby đơn giản và không liên quan gì đến các đường ray.

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

def pvt_meth_2 
    ..... 
end 

public 

def pub_meth_1 
    ...... 
end 
3

Hoặc thậm chí bạn có thể xác định kiểm soát truy cập của bạn theo cách này quá, liệt kê các phương pháp của bạn như các đối số vào các chức năng kiểm soát truy cập (công cộng, bảo vệ, tư nhân):

class SomeClass 
    def method1 
     ... 
    end 

    def method2 
     ... 
    end 

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

    public :method1, method4 
    protected :method3 
    private :method2 
end 
Các vấn đề liên quan