* Mark Ma <[EMAIL PROTECTED]> [2008-10-06 20:59:58 +0200]:

> 
> can anyone tell me how before filter can call the private method audit
> which from the parent class ?
> because the bank controller has a private method called audit, this one
> should not be inheritance by VaultController, so how the before_filter
> use the private method audit ?
> 
> if the child class can use the parent class private method . does it
> break encapsulation ? does the private has any sense here .because you
> can use it from ur child class , why just make it public ?

Ruby's private/public concept is different from those in other language
like java. Make a method private means you can't invoke it unless the
receiver is 'self'. So you can use parent's private methods in its
children, but you can't use Foo's private methods in a class who is not
child of Foo.

Jan

> 
> below is the example from rail api.
> 
> 
> 
> Controller inheritance hierarchies share filters downwards, but
> subclasses can also add or skip filters without affecting the
> superclass. For example:
> 
>   class BankController < ActionController::Base
>     before_filter :audit
> 
>     private
>       def audit
>         # record the action and parameters in an audit log
>       end
>   end
> 
>   class VaultController < BankController
>     before_filter :verify_credentials
> 
>     private
>       def verify_credentials
>         # make sure the user is allowed into the vault
>       end
>   end
> 
> Now any actions performed on the BankController will have the audit
> method called before. On the VaultController, first the audit method is
> called, then the verify_credentials method. If the audit method renders
> or redirects, then verify_credentials and the intended action are never
> called.
> -- 
> Posted via http://www.ruby-forum.com/.
> 
> --~--~---------~--~----~------------~-------~--~----~
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com
> To unsubscribe from this group, send email to [EMAIL PROTECTED]
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en
> -~----------~----~----~----~------~----~------~--~---

-- 
jan=callcc{|jan|jan};jan.call(jan)

Attachment: pgpZ0eutIWRNn.pgp
Description: PGP signature

Reply via email to