Thomas Buckley
Thomas Buckley

Reputation: 6056

rails 3 find command not working with postgresql database

I'm using ruby 1.9.2 and rails 3 with a postgresql 8.4 database.

I have the following piece of rails code.

@playersonline = Member.find(:all, :conditions => ["loggedIn = ?", true] )

And I get the following error when the line is encountered:

PGError: ERROR:  column "loggedin" does not exist

Looking at the query it generates it shows the following:

SELECT     "members".* FROM       "members"  WHERE     (loggedIn = 't')

The loggedIn column does exist in my table, and it has a boolean data type.

Another thing that is odd, when I try to query just the loggedIn column via a sql browser I get the same error? i.e. select loggedIn from members

Thanks

Upvotes: 2

Views: 467

Answers (1)

Chuck Callebs
Chuck Callebs

Reputation: 16431

Postgres is case-sensitive by default so loggedIn isn't the same as loggedin. Although you can override it, Rails convention is that variable name-parts are separates by an underscore.

I wouldn't recommend re-inventing the wheel. Go in and change the columnn name (and any other columns that follow your notation) you might have to logged_in. This will prevent you from encountering any more strange errors.

Upvotes: 4

Related Questions