Относительно в новинку для направляющих и пытающийся смоделировать очень простую семью "дерево" с единственной моделью 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 внешними ключами или возможно изменить внешний ключ на основе пола объекта? Или есть ли в целом другой/лучше путь?
Спасибо!
Использовали 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