Ответ 1
update_attribute
фактически выполняет физический вызов БД. Вы получаете полное выполнение инструкции UPDATE
. Это как update_attributes
, но только для одного столбца.
Пока write_attribute
записывает атрибут для назначения в модель для столбцов, основанных на AR. Если вы должны перезаписать атрибут базы данных.
def first_name=(val)
write_attribute :first_name, val
end
# some_model.first_name => 'whatever val is'
def first_name=(val)
@first_name = val
end
# some_model.first_name => nil
Я не рассматривал write_attribute
экстенсивно, но я понимаю, что модели на основе Activerecord обрабатывают назначения столбцов на основе db немного иначе, чем ваш запуск аксессуара мельницы.