Строка:
User.first
Создает экземпляр для первого пользователя каждый раз, когда вы вызываете его.
User.first.equal?(User.first) #=> false
# ^^^^^^
# Equality — At the Object level, returns true only if obj
# and other are the same object.
Вы устанавливаете атрибут online
другого экземпляра чем тот, из которого вы читаете (хотя они представляют одну и ту же запись). Сохраните пользователя в переменной. Таким образом, вы работаете с одним и тем же экземпляром для set и get call.
user = User.first
user.online = true
user.online #=> true