有很多通过铁路的关系

Ash*_*ngh 1 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"
Run Code Online (Sandbox Code Playgroud)

User friends 模型中间表以获取用户的朋友.

belongs_to :user
belongs_to :user, :foreign_key => "friend_id"
Run Code Online (Sandbox Code Playgroud)

用户朋友user_idfriend_id我在迁移中添加了列.

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

ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :user_friends in model User
Run Code Online (Sandbox Code Playgroud)

有人能帮忙吗?提前致谢.

moh*_*a27 5

您需要检查自我参照协会.显然你缺少一些概念.您不能在单个模型中添加具有相同名称的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
Run Code Online (Sandbox Code Playgroud)
# user_friends.rb
belongs_to :user
belongs_to :friend, :class_name => "User"
Run Code Online (Sandbox Code Playgroud)