Find_by_email dynamic method returning new

Hello everyone,

I have a rails app which uses email as login name. At some point, I
have to search the user, in the User model by email. For some reason,
the method User.find_by_email(email) returns nil, even though the user
is in the database.

The same applies for any find_by_* method that searches by any
database column. I was able to find the user using the User.find

Does anyone have an idea of what might be going on?

thanks,
-fred

On Thu, Sep 22, 2011 at 7:21 PM, Fred [email protected] wrote:

Does anyone have an idea of what might be going on?

Is this ruby 1.9?

Maybe … this is related to string encoding of the columns ?

Check the string encoding of the string by which you are searching
and the one that is used in the database.

Please show exact code samples for how you used User.find (with
succesful result) and User.find_by_email (without result).

For this scenario of encoding issues, please show the email.encoding
on the result from from the find
=> User.first.email.encoding

HTH,

Peter

Hi Fred,

I was having the same issue. I finally resolved it by defining the
find_by_email method in my app/models/user.rb file…

Example:

def self.find_by_email(email)
  where(:email => email).first
end

That did it for me!

Good luck,

Aaron G.