Я считаю, что ваш текущий код cars.collect{|c| c[:company]}
- лучший способ, если вы перечисляете произвольный массив.Метод, который вы передадите через ярлык &, должен быть методом, определенным в Hash, поскольку каждый объект в массиве имеет тип Hash
.Поскольку для Hash
не определен метод company
, вы получите ошибку «undefined method 'company'".
Вы можете использовать cars.collect(&:company)
, если вы работаете с Массивом Автомобилей, потому что каждый объект, переданный в блок collect
, будет иметь тип Car
(для которого доступен метод компании).Поэтому, возможно, вы могли бы изменить свой код, чтобы вместо него использовать массив Cars.