Rails Model has_many with multiple foreign_keys Rails Model has_many with multiple foreign_keys ruby ruby

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