Это сводит меня с ума. У меня есть 3 модели. Пользователь, Фото, Комментарии.
Вот что я хочу сделать.
У пользователя много фотографий и комментариев
Фотография принадлежит пользователю и имеет много комментариев
А комментарий принадлежит пользователю и к фотографии
Итак, мои модели имеют следующие ассоциации:
Пользователь
has_many :photos, :dependent => :destroy
has_many :comments, :dependent => :destroy
Фото
belongs_to :user
has_many :users, :through => :comments
has_many :comments, :dependent => :destroy
Комментарий
belongs_to :photo, :user
Теперь я хочу показать фотографию, загрузить все комментарии к этой фотографии и отобразить каждый комментарий с информацией о пользователе.
Так что на фото-контроллере покажи действие у меня
@photo = Photo.find(params[:id], :include => :comments, :order => 'comments.created_at DESC')
А на фото / в виде просмотра
=render :partial => "/comments/partials/comment", :collection => @photo.comments, :as => :comment
Отображает комментарии, например. текст комментария хорошо, но когда внутри частичного я пытаюсь сделать:
%p=comment.user.fname
%p=comment.body
Выдает ошибку "неопределенный метод` fname 'для nil: NilClass "
Что-то странное в том, что я являюсь пользователем authlogic, поэтому вы должны войти в систему, чтобы оставить комментарий. Но вы можете видеть комментарии, даже если вы не вошли в систему. Когда я вышел из системы, это работает, найти. Когда я вхожу в систему, выдает ошибку.
Любая помощь будет высоко ценится, потому что она сводит меня с ума.
Кстати в моих маршрутах у меня
map.resources :users, :has_many => [:photos, :comments]
map.resources :photos, :has_many => [:comments, :users]
Спасибо