返回自引用的源对象 has_many, :through

发布于 2024-11-05 01:28:20 字数 530 浏览 0 评论 0原文

这是我的用户模型:

class User < ActiveRecord::Base

  has_many :friends, :class_name => 'Friendship', :dependent => :destroy

end

这是我的友谊模型:

class Friendship < ActiveRecord::Base

  belongs_to :user
  belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'

  set_table_name :users_users
end

好的。因此,现在我的应用程序中实际上没有需要友谊对象的场景。例如,当我调用 User.find(1).friends 时,我不希望返回友谊对象数组。我实际上想要用户对象。

因此,当我调用 User.find(1).friends 时,如何使其返回 User 对象?

Here's my User model:

class User < ActiveRecord::Base

  has_many :friends, :class_name => 'Friendship', :dependent => :destroy

end

Here's my Friendship model:

class Friendship < ActiveRecord::Base

  belongs_to :user
  belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'

  set_table_name :users_users
end

Ok. So there isn't actually a scenario in my app right now where I need a friendship object. When I call User.find(1).friends, for example, I don't want an array of friendship objects to be returned. I actually want user objects.

THEREFORE, when I call User.find(1).friends, how can I make it return User objects?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲世九天 2024-11-12 01:28:20

你确定你不想要这个吗?

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

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end

完成此操作后,User.find(1).friends 将返回用户数组,而不是友谊数组。

Are you sure you don't want this?

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

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end

With this in place, User.find(1).friends will return an array of Users, not Friendships.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文