2016-06-16 10 views
0

Schienen Neuling hier; so ich habe drei Klassen - Benutzer, Artikel, Kommentar - woWie kann man zwischen zwei vorhandenen Klassen Referenzen erstellen?

class User < ActiveRecord::Base 
    has_many :articles 
end 

class Article < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :article 
end 

Jetzt bin zu will ich die Kommentare Benutzer spezifisch sein, dh jeder Kommentar wird einen Benutzer verknüpft wird (nur wie jeder Artikel zu einem verbunden ist Benutzer). Wie gehe ich dazu über das Hinzufügen von has_many und gehört in Benutzer.rb & comment.rb? Ich hoffe, ich habe mich klar ausgedrückt.

Antwort

0

Fügen Sie ähnliche Beziehungen zu User und Comment hinzu. Also ein Kommentar wird eine user_id sowie eine article_id haben.

class User < ActiveRecord::Base 
    has_many :articles 
    has_many :comments 
end 

class Article < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :article 
    belongs_to :user 
end 

Sie müssen eine Migration schreiben, nachdem Sie Ihre Modelle Alarmierungs ein user_id Feld Ihre comments Tabelle hinzuzufügen.

rails g migration AddUserRefToComments user:references 

Dann führen Sie rake db:migrate. Ich hoffe, das hilft.

+0

Das habe ich schon gemacht. Nichts anderes ist in den Controllern erforderlich? – Arif

+0

Nein, in Controllern ist nichts zu tun. Beim Erstellen eines neuen Kommentars müssen Sie jedoch die ID des aktuellen Benutzers in diesem Kommentar speichern. – Kumar

+0

Danke! Ich bin wahrscheinlich dick, aber ich habe Probleme, die ID des aktuellen Benutzers im Kommentar zu speichern. Ich versuche '@ article.current_user.comments.create (comment_params)' in der 'create' Methode in' CommentsController', wobei '@article = Article.find (params [: article_id])' 'aber es gibt einen Fehler – Arif

Verwandte Themen