Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Оба из них обновят объект без необходимости явно указывать AR для обновления.
Rails API говорит:
для update_attribute
Обновляет отдельный атрибут и сохраняет запись, не проходя обычную процедуру проверки. Это особенно полезно для логических флагов на существующих записях. Обычный метод update_attribute в Base заменяется этим при смешивании модуля валидации, который используется по умолчанию.
для update_attributes
Обновляет все атрибуты из переданного хэша и сохраняет запись. Если объект недействителен, сохранение не удастся и будет возвращено false.
Поэтому, если я не хочу проверять объект, я должен использовать update_attribute. Что если у меня будет это обновление для before_save, будет ли это переполнение стека?
Мой вопрос, делает ли update_attribute обход перед сохранением или только проверку.
Кроме того, каков правильный синтаксис для передачи хэша в update_attributes ... посмотрите мой пример вверху.
before_save
обратном вызове). ИП вместо update_attribute(:discount, 0.1) if amount > 100
тебя мог сделать discount = 0.1 if amount > 100
. update_attribute
вызывает save
объект, который в этом случае не нужен, поскольку оператор находится внутри функции before_save
обратного вызова и все равно будет сохранен. Я надеюсь, что в этом есть смысл.
update_attribute
заявление вbefore_save
обратный вызов? Я не могу придумать вескую причину для этого.