суббота, 9 марта 2013 г.

Массовое обновление записей в Ruby on Rails

Оказывается, у моделей в рельсах есть метод update, принимающий первым параметром массив из id изменяемых записей и вторым параметром список хешей, содержащих параметры для новых записей. Например:
Product.update([1,2],[{name: "Sandwich", description: "Delicious and moist"}, {name:"Dispenser", description: "Put it here"}])

При этом метод возвращает весь список продуктов, независимо от того, успешно ли они обновлены или нет. Чтобы отфильтровать записи, прошедшие валидацию и вытащить ошибочные, можно сделать следующее:

products = Product.update([1,2],[{name: "Sandwich", description: "Delicious and moist"}, {name:"Dispenser", description: "Put it here"}])
products.reject! { |p| p.errors.empty? } # теперь products содержит только ошибочные элементы, которые мы можем нарисовать заново с просьбой исправить ошибки
view raw gistfile1.txt hosted with ❤ by GitHub

Комментариев нет:

Отправить комментарий