Пожалуйста, обратитесь к update_attribute
. При нажатии на ссылку показать источник вы получите следующий код
# File vendor/rails/activerecord/lib/active_record/base.rb, line 2614
2614: def update_attribute(name, value)
2615: send(name.to_s + '=', value)
2616: save(false)
2617: end
и теперь обратитесь к update_attributes
и посмотрите на его код, который вы получите
# File vendor/rails/activerecord/lib/active_record/base.rb, line 2621
2621: def update_attributes(attributes)
2622: self.attributes = attributes
2623: save
2624: end
разница между двумя значениями update_attribute
использует save(false)
, тогда как update_attributes
использует save
или вы можете скажем save(true)
.
Извините за длинное описание, но важно то, что я хочу сказать. save(perform_validation = true)
, если perform_validation
ложно, он обходит (пропуски будут правильным словом) все проверки , связанные с save
.
На второй вопрос
Кроме того, каков правильный синтаксис для передачи хеша в update_attributes ... посмотрите мой пример вверху.
Ваш пример верный.
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
или
Object.update_attributes :field1 => "value", :field2 => "value2", :field3 => "value3"
или если вы получите все поля данных и имя в хеш-коде, скажем params[:user]
здесь используйте просто
Object.update_attributes(params[:user])