2014-12-16 3 views
0

Глупый вопрос, но я не могу найти пример. , ,association_to association - как я его называю?

Моя модель пользователя has_many Комментарии. Моя модель отзывов принадлежит пользователю. В таблице комментариев есть столбец user_id, который я включил в свой файл db: seed. У каждого комментария есть user_id.

Как я могу обратиться к пользователю комментария? «Comment.user» кажется, что он должен работать, но я продолжаю получать сообщения об ошибках, говорящие, что пользователь равен нулю или неопределенный метод.

В частности, я хочу обратиться к атрибутам пользователя через комментарий, например comment.user.avatar.

ответ

0

Вы имеете в виду класс Комментарий при попытке доступа к пользователю или фактическому экземпляру объекта? Делать что-то вроде следующего должно работать:

@user = User.new(username: "Bob") 
@comment = Comment.new(comment: "Hello World!", user: @user) 
puts @comment.user.username 

Однако, если вы делаете Comment.user это не потому, что вы не ссылки на конкретный экземпляр, а скорее саму модель. Если это так, это объясняет причину ваших ошибок.

+0

Фактически, я вхожу в цикл .each: –

+0

@ comments.each do | com |, а затем я пытаюсь использовать com.user.name и com.user.avatar. Но ActionController продолжает говорить мне, что пользователь ник! –

0

Незнакомец и незнакомец. , , сегодня я не получаю путаные сообщения об ошибках. Так что мой код работает! На всякий случай люди будут искать этот вопрос в будущем, я сделаю то, что должен был сделать в своем вопросе, и покажу больше моего кода. Опять же, комментарии принадлежат пользователю.

- @comments.each do |com| 
     = markdown com.body 
     %small 
     submitted 
     = time_ago_in_words(com.created_at) 
     ago by 
     = image_tag(com.user.avatar.tiny.url) if com.user.avatar? 
     = link_to((com.user.name || com.user.email), com.user) 
     %br 

Спасибо за ваш вклад, @raznic!

Смежные вопросы