有很多通过铁路的关系

时间:2014-11-07 05:02:46

标签: ruby-on-rails associations has-many model-associations

我正在使用facebook api从fb中获取用户。

我想将用户存储在我的模型User

我使用has many through关系来存储用户

我的user模型中的用户模型关系。

has_many :friends, :through => :user_friends, :class_name => "User", :foreign_key => "friend_id"

User friends模型中间表,用于获取用户的朋友。

belongs_to :user
belongs_to :user, :foreign_key => "friend_id"

用户朋友有user_idfriend_id列我在迁移中添加了这些列。

我在用户对象上使用.friends时出错。

ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :user_friends in model User

任何人都可以帮忙吗? 提前谢谢。

3 个答案:

答案 0 :(得分:5)

您需要检查Self-Referential Association。显然你缺少一些概念。您不能在单个模型中添加具有相同名称的2个关联(只有其中一个会响应)。

您应该添加has_many :user_friends,但您仍然会遗漏该关联的另一面,请查看此示例:


# user.rb
has_many :user_friends
has_many :friends, :through => :user_friends
has_many :inverse_friendships, :class_name => "UserFriend", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user

# user_friends.rb
belongs_to :user
belongs_to :friend, :class_name => "User"

答案 1 :(得分:1)

has_many :user_friends

之前添加has_many :through

答案 2 :(得分:1)

试试这个:

用户模型:

has_many :user_friends
has_many :friends, :through => :user_friends, :class_name => "User", :foreign_key => "friend_id"

朋友模特:

  has_many :user_friends
  has_many :users, through: :user_friends

用户好友模型

  belongs_to :user
  belongs_to :friend, :foreign_key => "friend_id"
相关问题