2017-01-19 1 views
0

3つのモデル:投稿、コメント、評価。Rails - 親の親に触れる

ポスト

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

コメント

class Comment < ApplicationRecord 
    belongs_to :post 
    has_one :rating 
end 

評価

class Rating < ApplicationRecord 
    belongs_to :comment 
end 

私はMETを呼び出す行うことができるようにしたいですレコードがRatingレコードに追加または削除されると、ポストモデル(たとえば、mean_ratingを計算)のhodがデータベースに追加されます。

ポストモデルメソッド内の評価モデルafter_createafter_destroyを呼び出すことでこれを行うことができますが、投稿モデルを依存型または他の方法で更新する方法があるのでしょうか?

アイデア?

答えて

0

あなたのPostモデルにメソッドを作成することができます。

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

    def average_rating 
    ratings.average(:note) 
    end 
end 

そして、あなたのインスタンスでそれを呼び出す:

post = Post.last 
post.average_rating 
関連する問題