2013-05-27 6 views
0

У меня есть вопрос о моем сайте. Схема выглядит следующим образом:Ruby on Rails имеет много отношений

У пользователя и сообщения есть много комментариев. Комментарии принадлежат пользователю и знакомому.

я

@specificpost = Post.first 

затем

@specificpost.comments 

работает прекрасно. Но проблема заключается в следующем:

@currentuser = User.first 

работает прекрасно.

@currentuser.posts 

дают мне посты объекта, но когда я

@currentuser.posts.comments 

комментарии нераспознан.

Succintly, я хочу, чтобы получить все комментарии, написанные в пост @currentuser

Спасибо за чтение этого далеко! :)

+0

Вы хотите, чтобы комментарии отображались для каждого сообщения текущего пользователя? @ Current_user.posts.map {| р | p.comments.count}, который вернет количество комментариев для каждого сообщения. – rmagnum2002

+0

Orif вам нужны комментарии @ current_user.posts.map {| p | p.comments} будет получать комментарии для каждого сообщения в массиве. – rmagnum2002

ответ

1

@currentuser.posts дает мне посты объекта

NO. Он дает Post объектов. Каждый из них имеет свои собственные комментарии, но сама коллекция не делает (это коллекция, в конце концов, не почта).

Я хочу, чтобы получить все комментарии, написанные в пост @currentuser

пост? У вас их несколько. Какой вы хотите?

# comments of first post (if user has no posts, error will be raised. Also applies to other methods) 
@current_user.posts.first.comments 

# comments of last post 
@current_user.posts.last.comments 

# all comments of all posts 
@current_user.posts.each_with_object([]) {|comments, memo| memo += comments} 
+0

Когда я говорю @ current_user.posts.each_with .. и т. Д., Он дает ошибку, которая говорит о неопределенном методе 'each_with_object 'для nil: NilClass – Yagiz

+2

Это означает, что' @ current_user.posts' является 'nil'. Вы уверены, что правильно настроили отношение, и этот пользователь действительно имеет сообщения? –

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