Rails Model has_many with multiple foreign_keys
Found a simple answer on IRC that seems to work (thanks to Radar):
class Person < ActiveRecord::Base belongs_to :father, :class_name => 'Person' belongs_to :mother, :class_name => 'Person' has_many :children_of_father, :class_name => 'Person', :foreign_key => 'father_id' has_many :children_of_mother, :class_name => 'Person', :foreign_key => 'mother_id' def children children_of_mother + children_of_father endend
To improve on Kenzie's answer, you can achieve an ActiveRecord Relation by defining Person#children
like:
def children children_of_mother.merge(children_of_father)end
see this answer for more details
Used named_scopes over the Person modeldo this:
class Person < ActiveRecord::Base def children Person.with_parent(id) end named_scope :with_parent, lambda{ |pid| { :conditions=>["father_id = ? or mother_id=?", pid, pid]} } end