2011-10-05 40 views
7

Các phương pháp này là gì và chúng có thể ghi đè chúng như thế nào?Object :: private và Object :: public trong Ruby là gì?

irb(main):001:0> Object::respond_to?('private', true) 
=> true 

irb(main):002:0> Object::respond_to?('public', true) 
=> true 

Sự cố xảy ra trong Rails khi cố gắng xác định phạm vi có tên riêng tư hoặc công khai cho mô hình. Bởi vì các bản sửa lỗi cho lỗi https://rails.lighthouseapp.com/projects/8994/tickets/4167-activerecord-named_scope-using-columns-as-the-name-is-buggered bây giờ có rất nhiều cảnh báo như:

Creating scope :public. Overwriting existing method MyModel.public. 

Trả lời

6

Các publicprivate phương pháp này thực sự bổ truy cập của ruby.

Về cơ bản, khi bạn làm điều này:

class Example 
    public 

    def something 
    end 

    private 

    def something_else 
    end 
end 

Các publicprivate từ khóa là thực sự không phải từ khóa ở tất cả, họ đang gọi phương thức. Tôi khá chắc chắn nó không phải là một ý tưởng tốt để ghi đè lên chúng, vì vậy tôi muốn đặt tên cho các phạm vi trong một số cách khác.

Các vấn đề liên quan