Функция user_rank
обновляет rank
пользователя и возвращает true
, потому что update_attributes
удалось. Затем вы устанавливаете user.rank
, который возвращает true
в update_user_rank
.
Либо изменить user_rank
, чтобы вернуть новый ранг, а не позвонить update_attributes
; или просто позвоните user.user_rank
от update_user_rank
, не присваивая его возвращаемое значение в user.rank
. Я бы посоветовал бывшие - изменить user_rank
на следующее:
def user_rank
sn = self.snippets.where(:approved => true)
if sn.count >= 10
"Author"
elsif sn.count > 10 && sn.count >= 20
"Co-Editor"
elsif sn.count >20 && sn.count >= 100
"Chief Editor"
else
"Clerk"
end
end