В модели ActiveRecord::Base
я могу reset состояние модели в том, что было, когда я получил ее из базы данных с помощью reload
, если атрибут, который я устанавливаю, сопоставляет столбцу таблицы
user = User.first
user.email #=> "[email protected]"
user.email = "[email protected]"
user.email #=> "[email protected]"
user.reload
user.email #=> "[email protected]"
Но если я добавлю настраиваемый атрибут, единственный способ, которым я обнаружил, что он действует одинаково, выглядит следующим образом:
class User < ActiveRecord::Base
attr_accessor :user_agent
def reload
super
self.user_agent = nil
self
end
end
Мой вопрос в том, есть ли какой-нибудь API, чтобы обновлять атрибуты без базы данных-столбца reset при перезагрузке? Что-то вроде:
class User < ActiveRecord::Base
# this
reloadable_attr_accessor :user_agent
# or this
def user_agent
@user_agent
end
def user_agent=(value)
set_instance_var_that_resets_on_reload("@user_agent", value)
end
end
Это где-то существует в Rails?