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 обрабатывают назначения для столбцов на основе базы данных немного по-другому, чем ваш запуск средства доступа к мельнице.