Mam model obrazu, który zawiera zmienną dla liczby wyświetleń (integer). Liczba wyświetleń jest zwiększana o +1 za każdym razem, gdy ktoś obejrzy obiekt Obraz..increment vs + = 1
W coraz to zrobić, jaka jest różnica między
@picture.view_count += 1
@picture.save
i
@picture.increment(:view_count, by = 1)
również w przypadku korzystania przyrost jest .save konieczne?
nie powinno być składnia '@ picture.increment (: view_count, 1)'? –
Uważaj na współbieżność !! Twoje oba rozwiązania nie są w tym przypadku bezpieczne! Wyobraź sobie, że dwóch użytkowników uruchamia kod w tym samym czasie. Oba działają z tą samą wartością 'view_count'. Następnie drugi użytkownik nadpisuje wartość pierwszego użytkownika przy zapisie, a końcowa liczba jest mniejsza niż oczekiwana. Powinieneś użyć 'increment_counter' aby tego uniknąć. –