Rails: update_attribute против update_attributes

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 ... посмотрите мой пример вверху.

Ответы на вопрос(11)

Ваш ответ на вопрос