2016-11-21 59 views
-1

我試圖更新一個ActiveRecord與軌道 - 更新的ActiveRecord列錯誤

@post.update_column('post_likes_count', @post.post_likes_count - 1) 

我敢肯定的是,@post存在,但我得到的錯誤信息:

ActiveRecord::ActiveRecordError (post_likes_count is marked as readonly): 

帖子的模型定義爲

class Post < ActiveRecord::Base 

    belongs_to :user 
    has_many :post_comments, :dependent => :destroy 
    has_many :post_likes, :dependent => :destroy 
    has_many :post_hashtags, :dependent => :destroy 
    validates_presence_of :user_id 
end 

我在做什麼錯了?

我想要做的是減少post_likes_count列。

回答

0

更新counter_cache的解決方案是調用destroy而不是刪除子節點。

我的post_likes_count正在計算一個帖子有多少人喜歡。當刪除post_like時,我打電話@post_like.delete,然後手動嘗試減少計數器。

因爲我的PostLike型號有counter_cache: true,所以如果您的確做了@post_like.destroy,它會自行減少發佈表中的計數器。