我试图用
更新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 :(得分:0)
为了更新counter_cache,解决方案是在子节点上调用destroy而不是delete。
我的post_likes_count正在计算帖子的喜欢数量。当删除post_like时,我正在调用@post_like.delete
,然后手动尝试递减计数器。
因为我的PostLike模型有counter_cache: true
,如果你执行@post_like.destroy
,它会自动减少post表中的计数器。