2013-05-26 8 views
0

У меня есть эта установка:Как узнать имя пользователя

class User < ActiveRecord::Base 
    has_many :posts, :dependent => :destroy 
    has_many :comments, :through => :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

Как я могу принести имя пользователя, которые делают комментарии?

+1

Кажется, нет никакой связи между комментарием и пользователем, предполагая, что публикация может быть прокомментирована иначе, чем автор сообщения. – Sirupsen

ответ

0

Вы можете использовать делегат

class Comment < ActiveRecord::Base 
    belongs_to :post 

    delegate :user, to :post 
end 

Тогда в вашем коде Вы можете получить доступ

@comment.user 
1

Вы пропускаете Комментарий-относится-пользователь ассоциации:

class Comment < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :user 
end 

Таким образом, вы можете принести commentor довольно легко:

@comment.user 
+0

Но мне нужно получить пользователя из вышеприведенной ассоциации. пожалуйста, помогите мне. – Akhil

+0

Учитывая '@post = Post.first', вы можете перебирать комментарии так:' @post.comments.each {| c | '% s:% s'% [c.user, c.body]} '. По соображениям производительности вы можете использовать '@post = Post.includes (комментарии:: user) .first', чтобы избежать N + 1 запросов. – DMKE

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