Как Вы выполняете итерации по активным рекордным объектам в Ruby on Rails?

Спасибо всем, кто внес свой вклад в эту тему и помог мне понять, как проверить числовые значения. Я хотел опубликовать свои результаты о том, как обрабатывать отрицательные числа, для тех, кто также может найти эту тему при поиске ...

Примечание: моя функция требует передачи строки из-за использования Trim ().

function IsNumeric($value) {
# This function will test if a string value is numeric
#
# Parameters::
#
#   $value   - String to test
#
   return ($($value.Trim()) -match "^[-]?[0-9.]+$")
}
5
задан Tony 10 June 2009 в 15:49
поделиться

4 ответа

Возможно, вы ищете

cars = Vehicle.find_all_by_num_wheels(4)

. Динамические методы find_by_ возвращают только один элемент, и вам нужно использовать find_all_by_ , чтобы вернуть несколько.

]
12
ответ дан 18 December 2019 в 10:48
поделиться

Если вам всегда нужны все машины, вы должны вместо этого использовать find_all :

cars = Vehicle.find_all_by_num_wheels(4)

Вы также можете превратить одиночный Автомобиль в массив с:

cars = [cars] unless cars.respond_to?(:each)
2
ответ дан 18 December 2019 в 10:48
поделиться

Именованная версия с ограниченной областью действия для вашей проблемы

Vehicle.scoped(:conditions => { :num_wheels => 4 } ).each { |car| car.inspect }
2
ответ дан 18 December 2019 в 10:48
поделиться

Вы можете делать это для получения массивов каждый раз:

cars = Vehicle.find(:all, :conditions => {num_wheels => 4})

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

Другое решение:

for i in (1..cars.lenght)
  puts cars[i].inspect
end

(не проверял, может сломаться, чтобы проверить длину строки. Сообщите мне, если это так)

0
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: