Как получить непостоянную переменную ActiveRecord для сохранения? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь настроить атрибут, который не сохраняется в базе данных, но я не могу понять, как изменить его и прочитать новое значение.

class User < ApplicationRecord
  attribute :online, :boolean, default: false
end

в консоли Rails:

User.first.online = true
=> true
User.first.online
=> false

Я бегу Ruby -на-рельсах 5.2.4.1 и ruby 2.4.1 https://api.rubyonrails.org/v5.2.4.1/classes/ActiveRecord/Attributes/ClassMethods.html#method -i-атрибут

1 Ответ

2 голосов
/ 31 марта 2020

Строка:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...