Ответ 1
Избивает меня, почему вы хотите сделать такое, но:
def reload_attribute(attr)
value = self.class.where(:id=>id).select(attr).first[attr]
self[attr] = value
end
Это вызывает a SELECT
, который извлекает только один столбец и присваивает его значение атрибуту в текущем экземпляре модели. Вызов с помощью (например):
post = Post.find(1)
post.reload_attribute(:body)
Правда, вы должны просто пойти с post.reload
(doc). Если у вас не слишком широкие столбцы, которые накладывают некоторую производительность на выполнение SELECT *