Оказывается, у моделей в рельсах есть метод update, принимающий первым параметром массив из id изменяемых записей и вторым параметром список хешей, содержащих параметры для новых записей. Например:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Product.update([1,2],[{name: "Sandwich", description: "Delicious and moist"}, {name:"Dispenser", description: "Put it here"}]) |
При этом метод возвращает весь список продуктов, независимо от того, успешно ли они обновлены или нет. Чтобы отфильтровать записи, прошедшие валидацию и вытащить ошибочные, можно сделать следующее:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
products = Product.update([1,2],[{name: "Sandwich", description: "Delicious and moist"}, {name:"Dispenser", description: "Put it here"}]) | |
products.reject! { |p| p.errors.empty? } # теперь products содержит только ошибочные элементы, которые мы можем нарисовать заново с просьбой исправить ошибки |
Комментариев нет:
Отправить комментарий