2016-11-20 2 views
0

私は、アクティブなレコードの1つの列を減らす問題があります。rails - decrement activeレコード列

このようなレコードを取得する - それが正常にポストを返す

@post = Post.active.find(params[:post_id]) 

を。

私のポストモデルに住んでいる@post.decrement_likes_countを呼び出してください。

decrement_likes_count:

def decrement_likes_count 
    self.post_likes_count -= 1 
    self.save! 
end 

それは文字通り、一部だけを保存しないと全くpost_likes_countの列には触れていません。

英雄ログをチェックすると、投稿のupdated_at列が更新されますが、そのカウンタは減分されません。

私は間違っていますか?

答えて

0

レコードを保存していない正確な問題は何かわかりませんが、ActiveRecordが提供するdecrementメソッドを見てみることをお勧めします。

構文:

decrement(attribute, by = 1) 

例えば

@post = Post.active.find(params[:post_id]) 
@post.decrement(:post_likes_count) 
@post.save 

この方法の良いところは、あなたがおよそnil値を心配する必要はありませんです。それはそれらを処理します。

関連する問題