Поменять местами в одной строке с ruby
# Original values
# book_1.sequence = 10
# book_2.sequence = 15
book_id = [1,2]
book_1, book_2 = Book.find(book_ids)
book_1.sequence, book_2.sequence = book_2.sequence, book_1.sequence
book_1.save; book_2.save
Еще короче ( не рекомендуется , поскольку это очень запутанно, определенно не аккуратно и не интуитивно понятно):
Book.find(book_ids).tap { |book_1, book_2| book_1.sequence, book_2.sequence = book_2.sequence, book_1.sequence }.map &:save
#tap
возвращает блок self in, который отображается на book_1
и book_2
, меняет значения последовательности и возвращает books в том же порядке, что save
затем сохраняет его.