rails - 更新activerecord列错误

时间:2016-11-21 02:31:59

标签: ruby-on-rails 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列。

1 个答案:

答案 0 :(得分:0)

为了更新counter_cache,解决方案是在子节点上调用destroy而不是delete。

我的post_likes_count正在计算帖子的喜欢数量。当删除post_like时,我正在调用@post_like.delete,然后手动尝试递减计数器。

因为我的PostLike模型有counter_cache: true,如果你执行@post_like.destroy,它会自动减少post表中的计数器。