2011-10-05 2 views
7

Quali sono questi metodi e quanto è grave ignorarli?Che cos'è Object :: private e Object :: public in Ruby?

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

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

Il problema si presenta in Rails quando si tenta di definire un ambito denominato privato o pubblico per un modello. A causa della correzione per il bug https://rails.lighthouseapp.com/projects/8994/tickets/4167-activerecord-named_scope-using-columns-as-the-name-is-buggered ora c'è un sacco di avvertimenti come:

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

risposta

6

I public e private metodi sono in realtà modificatori di accesso di rubino.

Fondamentalmente, quando si esegue questa operazione:

class Example 
    public 

    def something 
    end 

    private 

    def something_else 
    end 
end 

I public e private parole chiave non sono in realtà le parole chiave in tutto, sono chiamate di metodo. Sono abbastanza sicuro che non è una buona idea ignorarli, quindi nominerei gli ambiti in qualche altro modo.