gpt4 book ai didi

ruby-on-rails - 如何在 ActiveRecord 中建立自反自联接关系?

转载 作者:行者123 更新时间:2023-12-05 00:08:54 26 4
gpt4 key购买 nike

我正在尝试实现社交网络风格的友谊模型,但我没有太多运气试图找出可用的插件。我想如果我自己做,我会更好地学习 Rails。所以这就是我所拥有的:

class User < ActiveRecord::Base
has_many :invitee_friendships ,
:foreign_key => :friend_id,
:class_name => 'Friendship'

has_many :inviter_friends,
:through => :invitee_friendships

has_many :inviter_friendships ,
:foreign_key => :user_id,
:class_name => 'Friendship'

has_many :invited_friends,
:through => :inviter_friendships

end

class Friendship < ActiveRecord::Base
belongs_to :user
//I think something needs to come here, i dont know what
end

irb当我尝试这个时:
friend1  = Friend.create(:name => 'Jack')
friend2 = Friend.create(:name => 'John')
bff = Friendship.create(:user_id =>1, :friend_id => 2)
f1.invited_friends

我收到一个错误:
ActiveRecord::HasManyThroughSourceAssociationNotFoundError:
Could not find the source
association(s) :invited_friend or
:invited_friends in model Friendship.
Try 'has_many :invited_friends,
:through => :invited_friendships,
:source => <name>'. Is it one of
:user?

友情系统扩展:
  • 用户可以邀请其他用户成为 friend 。
  • 您邀请成为好友的用户由 invited_friends 表示.
  • 邀请您成为好友的用户由 inviter_friends 表示.
  • 您的总好友列表由 invited_friends 表示+ inviter_friends .

  • 架构
    table Friendship
    t.integer :user_id
    t.integer :friend_id
    t.boolean :invite_accepted
    t.timestamps

    table User
    t.string :name
    t.string :description

    最佳答案

    我很惊讶没有人指出最近 Ryan Bates 的 screencast关于这个话题:)

    希望这可以帮助!。

    摘自 Ryan '...需要在 User 模型上进行自我引用关联来定义 friend /关注者'

    关于ruby-on-rails - 如何在 ActiveRecord 中建立自反自联接关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034411/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com