has_many :open_invitations,
:class_name => 'Invitation',
:conditions => "completed_at IS NULL AND is_closed = 'f'"
This works for SQLite3. But as a literal string this will fail if the
boolean values are different in another db system like MySQL, right?
How can I use a boolean in a condition that will work across all db
types?
:conditions => ["completed_at IS NULL AND is_closed = ?", false] works
across databases when finding records. Does it work in a has_many
declaration?
has_many :open_invitations, :class_name => ..., :conditions =>
["completed_at IS NULL AND is_closed = ?", false]
Regards,
Craig
Thanks for the replies! Craig's solution worked - you CAN use a "safe
array" in the conditions of has_many. The final associations look like
this and have been confirmed working in the console:
class User
has_many :invitations
has_many :open_invitations,
:class_name => 'Invitation',
:conditions => ["completed_at IS NULL AND is_closed = ?",
false]
has_many :closed_invitations,
:class_name => 'Invitation',
:conditions => ['completed_at IS NOT NULL OR is_closed = ?',
true]