Rails和Active Record STI Cat和Dog每个都有一个好友,可以使用ActiveRelation吗?

时间:2015-03-28 00:33:46

标签: ruby-on-rails activerecord

我正在尝试使用STI将树的一侧的一个对象与另一侧的对象相关联。我想做的是下面。具体问题,我应该使用has_one,belongs_to吗?当一个人更新时,还需要做什么才能看到这个关系?

class Animal < ActiveRecord::Base
end

class Cat < Animal
  has_one :buddy # this is buddy_id, and has to be a dog
end

class Dog < Animal
  has_one :buddy # this should reference the other side? and should be a cat
end

1 个答案:

答案 0 :(得分:0)

只是让其中一个属于另一个,而另一个将拥有第一个,假设cat是具有id字段的那个

class Cat < Animal
  belongs_to :buddy, class_name: Dog.name
end

class Dog < Animal
  has_one :buddy, class_name: Cat.name
end