Ruby guidelines state that methods should always be lowercase, just as your second example. Capitals should be used to name classes.
On 6 sep, 19:59, pipplo <[email protected]> wrote: > Awesome! > > Thanks Fred and Xuan. I was able to really clean up my code once I > understood this. > > One side question based on this. Is there some normal ruby coding > guidelines? I was thinking I would want to make class level functions > capital, and instance level functions lowercase. > > User.Authenticate > user.hash_password > > I'll keep looking. Thanks everyone again. > > Joe > On Sep 6, 10:01 am, Xuan <[email protected]> wrote: > > > On 6 sep, 08:00, pipplo <[email protected]> wrote: > > > > Hi Guys, > > > > I'm experimenting with my first rails app currently. One thing I'm > > > trying to implement is a login system. > > > > I created a model for user.rb I've added a couple of functions to the > > > class for example: > > > > def self.authenticate(user_info) > > > find_by_username_and_password(...., > > > self.hashed_password(user_info[:password])) > > > end > > > > def self.hashed_password(password) > > > Digest::SHA2.hexdigest(password) > > > end > > > > So from user.rb function self.authenticate I can call > > > self.hashed_password and it works fine. > > > > From another file (user_controller.rb) I try to create a new user > > > based on the authentication parameters, and then call authenticate on > > > that user. In order to do that I have to call > > > user_into.class.authenticate instead of user_info.authenticate... > > > > I don't understand what is going on here with def self.{function} and > > > the .class modifier. > > > > Can someone point to me somewhere to explain? I have a feeling I'm > > > doing something wrong but I don't understand what. > > > > Thanks > > > Hi pipplo, > > > When you define a "def self.function" method in yor User class, you > > define a "class level" method. > > When you define a "def function" method, you define an "instance level > > method". > > > Class and instance level define from where you can call a method: > > If its class level you need a class and thats why you call it as > > "User.authenticate". Given an object it needs a .class after it to > > obtain its class. > > On the other hand instance level means your method is callable from an > > object, so you call it as "my_user.name". Also, since you need a > > particular object of a class, you can't call "User.name". > > > "self" references to the object that called the method: > > If you use self when defining a method, self references to the class > > you are defining it for. > > If you use self into a method's code defined at class level ( def > > self.method), again it references to the class (a class is also an > > object itself). > > If you use self into a method's code defined at instance level, it > > references to the particular object that called the method. For > > instance: if you call "my_user.method", "self" inside "method" would > > reference "my_user". -- 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 [email protected]. 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.

