自我参照关系ActiveRecord

时间:2013-02-13 15:46:34

标签: ruby-on-rails rails-activerecord

为了在活动记录中建立自我参照关系,我遵循了rails-cast#163 http://railscasts.com/episodes/163-self-referential-association中显示的自引用模型,但我不喜欢这个模型,因为我必须写友谊< strong>和 inverse_friendships,我不能只做类似的事情:

in my person.rb

class Person 
  has_many :friendships
  has_many :friendships, :foreign_key => "friend_id"
  has_many :friends, :through => :friendships
  has_many :friends, :through => :friendships, :source => :person
end

和我的friendship.rb

class Friendship
  belongs_to :person
  belongs_to :friend, :class_name => "Person"
end

1 个答案:

答案 0 :(得分:2)

不,您不能拥有类似命名的关联,这些名称在模型中必须是唯一的。否则,当您的代码中有friendships时,ActiveRecord将如何知道您的@user.friendships是什么意思?