2017-01-19 6 views
0

Drei Modelle: Post, Kommentar, Bewertung.Schienen - berührende Eltern eines Elternteils

Beitrag

class Post < ApplicationRecord 
    has_many :comments 
    has_many :ratings, through: :comments 
end 

Kommentar

class Comment < ApplicationRecord 
    belongs_to :post 
    has_one :rating 
end 

Bewertung

class Rating < ApplicationRecord 
    belongs_to :comment 
end 

ich traf in der Lage sein möchten, nenn hod auf Post-Modell (um zum Beispiel zu berechnen mean_rating), wenn der Rating Datensatz wird hinzugefügt oder in meine Datenbank entfernt.

Ich bin darauf mit dem Aufruf der Post-Modell Methode innerhalb Ratingmodell after_create und after_destroy Lage, aber ich frage mich, ob es einen Weg gibt Beitrag Modell abhängig oder andere Methoden zu aktualisieren?

Irgendwelche Ideen?

Antwort

0

Sie könnten eine Methode in Ihrem Beitrag Modell erstellen:

class Post < ApplicationRecord 
    has_many :comments 
    has_many :ratings, through: :comments 

    def average_rating 
    ratings.average(:note) 
    end 
end 

Und nennen Sie es auf Ihre Instanzen:

post = Post.last 
post.average_rating 
Verwandte Themen