Ruby / Rails 3: превращение набора атрибутов объекта в массив - PullRequest
0 голосов
/ 12 марта 2011
@video = Video.find(params[:id])

@lengths = @video.each do |i|
  @length = i.length * 60
end

Во-первых, я предполагал, что @video будет иметь каждый, но вместо этого получил эту ошибку:

undefined method `each' for #<Video:0x4738428>

Во-вторых, есть ли в Ruby однолинейная магия, которая могла бы заменить последние 3 строки?

Ответы [ 2 ]

4 голосов
/ 12 марта 2011

@ video в данном случае не является массивом, это объект, потому что вы попросили модель Video вернуть только одно видео с идентификатором, указанным в массиве params.

На случай, если вы захотитечтобы извлечь все видео из базы данных, сделайте следующее:

@video = Video.all

Теперь @video будет массивом видеообъектов.

1 голос
/ 12 марта 2011

Пиццикато ответил на ваш вопрос очень хорошо, но вот мои два цента:

Если вы хотите узнать класс объекта, вы можете сделать:

p Video.find (params [: id]). Class

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