В модели ActiveRecord::Base
я могу сбросить состояние модели до того, что было, когда я получил ее из базы данных с помощью reload
, пока атрибут, который я устанавливаю, сопоставляется со столбцом таблицы:
user = User.first
user.email #=> "email@domain.com"
user.email = "example@site.com"
user.email #=> "example@site.com"
user.reload
user.email #=> "email@domain.com"
Но если я добавлю пользовательский атрибут, я обнаружу, что единственный способ заставить его действовать так же:
class User < ActiveRecord::Base
attr_accessor :user_agent
def reload
super
self.user_agent = nil
self
end
end
Мой вопрос, есть ли какой-нибудь APIсбросить атрибуты не-базы данных-столбцов при перезагрузке?Что-то вроде:
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?