Выбор объектов по индексу массива в Rails 3 - PullRequest
2 голосов
/ 25 октября 2011

Я пытаюсь выбрать коллекцию объектов, используя ActiveRecord, по индексу в массиве.

Я знаю, что могу выбрать Item.first или Item.last или один или диапазон.Но я хочу обновить произвольную группу по индексу их позиции в массиве.

collection = Item.all.to_a
collection[3,5,9,11]

Возможно ли это?

Заранее спасибо ...

-- edit -

Благодаря помощи Tokland я смог заставить его работать идеально.

Если кто-то еще захочет сделать что-то подобное, вот что я сделал:

yesterday = Time.now - 1.day
i = Item.all
new_items = i.values_at(1,3,5,10,11,14,18)
new_items.each{ |e| e.update_attributes(:published_at => yesterday) }

Ответы [ 2 ]

7 голосов
/ 25 октября 2011

Если вы имеете в виду индексы в массиве (не идентификаторы):

collection.values_at(3, 5, 9, 11)
1 голос
/ 25 октября 2011

Если я правильно понимаю, вам нужно

Item.find([3,5,9,11])

Вот как вы можете найти запись по идентификатору. Но этот метод выдает исключение, если будет какой-то идентификатор, который не существует.

Item.find_all_by_id([3,5,9,11])

Это сработает, даже если некоторые идентификаторы не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...