2016-11-21 3 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 вместо delete на дочерних элементах.

Мой post_likes_count подсчитывал количество понравившихся сообщений. При удалении post_like я вызывал @post_like.delete, а затем вручную пытался уменьшить счетчик.

Потому что моя модель PostLike имеет counter_cache: true, если вы делаете @post_like.destroy, она сама уменьшает счетчик в таблице сообщений.

Смежные вопросы