Frage

Ich versuche, eine Social-Networking-Stil Freundschaft Modell zu implementieren und ich nicht viel, viel Glück haben versucht, die Plugins zur Verfügung da draußen, um herauszufinden. Ich glaube, ich Rails besser lernen würde, wenn ich es selbst tun. Also hier ist, was ich habe:

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

In irb wenn ich versuche, dies:

friend1  = Friend.create(:name => 'Jack')
friend2  = Friend.create(:name => 'John')
bff = Friendship.create(:user_id =>1, :friend_id => 2)
f1.invited_friends

Ich erhalte eine Fehlermeldung:

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?

Expanation Freundschaftssystem:

  • Ein Benutzer kann andere Nutzer einladen, zu Freunden werden.
  • Benutzer, die Sie eingeladen zu Freunden werden durch invited_friends vertreten.
  • Benutzer, die Sie eingeladen, Freunde zu werden durch inviter_friends vertreten.
  • Ihr Gesamt Freund Liste wird von invited_friends + inviter_friends vertreten.

Schema

table Friendship
      t.integer :user_id
      t.integer :friend_id
      t.boolean :invite_accepted
      t.timestamps

table User
    t.string :name
    t.string :description
War es hilfreich?

Lösung

Ich bin überrascht, niemand den letzte Ryan Bates darauf hat Screen zum Thema :)

Hope, das hilft !.

Auszug aus Ryan‘... erfordert einen selbstbezüglicher Verein auf dem User-Modell Freunde / Anhänger zu definieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top