Forum: Ruby on Rails how to determine if a database column has been set?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
9d12e24c0a3aebe28b58682d517acdfb?d=identicon&s=25 (Guest)
on 2008-11-15 01:05
(Received via mailing list)
lets say that i have a column in one of my tables:
initial_odometer_reading (type is decimal), which for any particular
record, may or may not be set by the user of the application.

somewhere in my code, i want to search for those records for which the
user has set/initialized this column.

how do i do so, properly?

i can set the default value in the 'create table' method to be '-1'
and then query for '-1', this works, but doesn't seem right. i want to
do the right thing here.

what is the conventional way to solve this?

note that zero is a legitimate value to which the user may set the

3f38541776a2513a20ea2f1c2d522cb3?d=identicon&s=25 Perry Smith (pedz)
on 2008-11-15 04:12
The database query that you want is foo.odometer IS NULL (for when it
has not been set) or IS NOT NULL (for when it has ben set).

You could google ActiveRecord and "IS NULL" and see if you find hits.  I
*think* the code does this correctly.  e.g.

Table.find(:all, :conditions => { :odomiter => nil })

Try it, look at the log and see if you get the right query.  Last
resort, you can do the SELECT query yourself.
3f38541776a2513a20ea2f1c2d522cb3?d=identicon&s=25 Perry Smith (pedz)
on 2008-11-15 04:38
Also, if you are interested.  NULL values in database tables, by the
super DB guys like Date and Pascal, are frowned upon.  They create
"three way logic" which often yields unexpected results and is not part
of boolean algebra and is outside of the theory that relational DB is
based upon.

They would argue until they passed out that judicious use of default
values is a far better way to go.
This topic is locked and can not be replied to.