Rails 3 - ассоциации - как это работает? - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь понять поведение ассоциаций, но я делаю что-то не так.

У меня есть две модели:

class Album < ActiveRecord::Base
  has_many :photos
end

class Photo < ActiveRecord::Base
  belongs_to :album
end

Это означает, что в одном альбоме может быть много фотографий икаждая фотография принадлежит одному альбому.

Теперь, если у меня есть этот код в представлении (при условии, что я установил @album = 106 в контроллере, который является идентификационным номером альбома):

@album.photos.each_with_index do |pic, index|
  ...
end

И я получил ошибку: ActionView::Template::Error (undefined method 'photos' for 106:Fixnum):

Почему я получаю это сообщение об ошибке?Я подумал, что должен установить @album идентификатор переменной альбома, и тогда цикл будет искать фотографии в таблице Photos по album_id (album_id = 106).

Что я делаю до сих порне так?

1 Ответ

4 голосов
/ 07 сентября 2011

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

@album = Album.find(106)

Чтобы отсортировать фотографии по дате создания, сделайте это следующим образом:

@album.photos.order('created_at DESC').each_with_index do |pic, index|
  ...
end
...