2016-11-20 2 views
0

Ich habe Probleme, eine Spalte eines meiner aktiven Datensätze zu dekrementieren.Schienen - Dekrementiere aktive Datensatzspalte

Erste der Datensatz wie folgt aus -

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

Es erfolgreich die Post zurückgibt.

Dann ruft , die in meinem Post-Modell lebt.

decrement_likes_count:

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

Es buchstäblich nur den Teil speichern tut und berührt nicht die post_likes_count Spalte überhaupt.

Wenn ich die Heroku-Logs überprüfe, wird nur die Spalte updated_at aktualisiert, aber der Zähler wird nicht dekrementiert.

Was mache ich falsch?

Antwort

0

Nicht sicher, was ist das genaue Problem, es speichert nicht den Datensatz, aber ich würde vorschlagen, einen Blick auf decrement Methode von ActiveRecord zur Verfügung gestellt.

Syntax:

decrement(attribute, by = 1) 

beispiels

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

Das Gute an dieser Methode ist, dass Sie nicht über nil Werte kümmern müssen. Es behandelt sie.

Verwandte Themen