Если @mandates
- это результирующий набор, содержащий модели с атрибутами a
, b
и c
, а @tabattributes
- это массив %w{a b}
(т.е. вы хотите извлечь a
и b
из каждого элемента @mandates
) тогда:
a = @mandates.map { |m| m.attributes.slice(*@tabattributes) }
даст вам массив хэшей с ключами 'a'
и 'b'
.Например:
@tabattributes = %w{id created_at}
slices = @mandates.map { |m| m.attributes.slice(*@tabattributes) }
# slices is now like [ { 'id' => ..., 'created_at' => ... }, ... ]
Если вы хотите только значения и не заботитесь о ключах, возможно, это подойдет вам:
@mandates.map { |m| m.attributes.slice(*@tabattributes).values }
Это даст вам массив-из-массивов.С первым массивом хэшей, вероятно, будет проще работать.
Если вы можете получить @mandates
до доступа к базе данных, то вы можете вырезать только те столбцы, которые вам интересны, внутри базы данных с помощьюкак то так:
@mandates = Mandate.select(@tabattributes)
slices = @mandates.map(&:attributes)