Модель направляющих has_many с несколькими foreign_keys

Относительно в новинку для направляющих и пытающийся смоделировать очень простую семью "дерево" с единственной моделью Person, которая имеет имя, пол, father_id и mother_id (2 родителя). Ниже в основном, что я хочу сделать, но очевидно я не могу повториться: дети в has_many (первое перезаписывается).

class Person < ActiveRecord::Base
  belongs_to :father, :class_name => 'Person'
  belongs_to :mother, :class_name => 'Person'
  has_many :children, :class_name => 'Person', :foreign_key => 'mother_id'
  has_many :children, :class_name => 'Person', :foreign_key => 'father_id'
end

Существует ли простой способ использовать has_many с 2 внешними ключами или возможно изменить внешний ключ на основе пола объекта? Или есть ли в целом другой/лучше путь?

Спасибо!

49
задан Kenzie 20 November 2008 в 15:51
поделиться

1 ответ

Использовали named_scopes над моделью Person сделать это:

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
9
ответ дан 7 November 2019 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: