1

我有一个Friends模型,user_id并且friend_id...两者都是特定用户的 id。

我想做的是这样的:

@relationship = Friend.find_by_user_id(current_user.id)
@relationship.friend.username

我基本上可以friend_id以与我相同的方式将用户拉过列@relationship.user.username

我将如何设置我的关联来实现这一目标?

4

2 回答 2

0

这不只是多对多的情况吗。

我认为在多对多关系中与rails中的相同模型有一个完美的解决方案?

希望这有帮助!

于 2013-05-20T13:20:40.160 回答
0

class_name如果您的列不反映预期的约定,请使用:

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, class_name: 'User'
end

请注意,我修改了模型名称以Friendship更好地反映该模型的使用。此外,如果您将User模型修改为如下所示,您可以让自己变得更容易:

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, :through => :friendships

  has_many :friendships_of, :class_name => 'Friendship', :foreign_key => :friend_id
  has_many :friends_of, :through => :friendships_of, :source => :user
end

现在查看所有用户的朋友:

current_user.friends.map(&:username)

并查看谁“加好友”了用户:

current_user.friends_of.map(&:username)
于 2013-05-20T13:31:04.730 回答