Оптимизация запроса рельсов и ассоциаций - PullRequest
1 голос
/ 31 января 2012

В моем приложении есть следующие ассоциации:

# user.rb
has_many :posts, :dependent => :destroy
has_many :likes, :dependent => :destroy

# post.rb
belongs_to :user
has_many :likes, :dependent => :destroy


# like.rb
belongs_to :user
belongs_to :post

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

@user = User.find(params[:id])
@posts_user_likes = []
@user.likes.each do |like| # TODO optimize
  @posts_user_likes << Post.find_by_id(like.post_id)
end

но это кажется очень неэффективным.

Какой лучший способ улучшить мой код, с другой ассоциацией или другим способом зацикливания?

1 Ответ

5 голосов
/ 31 января 2012

Добавьте has_many :liked_posts, :through => :likes, :class_name => 'Post' к User и затем наберите User.find(params[:id]).liked_posts.

...