Rails3 Finders - OR conditions

There just does not seem to be much information out their on Rails3
finders.

The finders and chaining are basically “awesome”, at least if you are
doing Model.where().where() which generates AND conditions. Can’t
find much on OR condition examples, except putting the “or” conditions
in text in the where arguments.

I think I read that OR was not working in arel yet, but I found
something that I’m not sure if it’s rails3 or ruby that is making it
work. Playing with a genealogy model
Person:id,father_id,mother_id,name,etc. I wrote some model queries:

def parents
Person.where(:id => [self.father_id, self.mother_id])
end

def children
self.gender == ‘m’ ? Person.where(:father_id => self.id) :
Person.where(:mother_id => self.id)
end

def siblings
if self.father_id > 0 and self.mother_id > 0
Person.where(:father_id => self.father_id, :mother_id =>
self.mother_id).where(“id != %d”,self.id)
else
[]
end
end

def half_siblings
fatherside = Person.where(:father_id =>
self.father_id).where(“mother_id != ?”,self.mother_id)
motherside = Person.where(:mother_id =>
self.mother_id).where(“father_id != ?”,self.father_id)
halfsiblings = fatherside | motherside
end

The half_siblings method requires an “or” condition and the “|”
actually works but does not return a relation, but an array of AR’s.
If I change the “|” to a “&”, which is an alias to merge and does the
AND stuff and where I got the brainfart to try “|”, it returns a
relation (that, of course fails to find any records).

Does anyone know of a good post on rails3 finders with some detailed
examples?

Steve A.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs