Я использую Ruby on Rails 3.1, и я пытаюсь улучшить SQL-запрос, чтобы получить как «связанные» записи, так и связанные с ними записи (ActiveRecord::Associations
), чтобы избежать запроса «N + 1» проблема ". То есть, у меня есть:Как получить как «связанные» записи, так и «связанные через» записи по-исполнительски?
class Article < ActiveRecord::Base
has_many :category_relationships
has_many :categories,
:through => :category_relationships
end
class Category < ActiveRecord::Base
has_many :article_relationships
has_many :articles,
:through => :article_relationships
end
В нескольких запросов SQL (то есть, в «производительным способом», возможно, с помощью Ruby On Rails includes()
метод) Я хотел бы получить как categories
и category_relationships
, или оба articles
и article_relationships
.
Как это сделать?
P.S .: Я улучшить запросы, например, следующие:
@category = Category.first
articles = @category.articles.where(:user_id => @current_user.id)
articles.each do |article|
# Note: In this example the 'inspect' method is just a method to "trigger" the
# "eager loading" functionalities
article.category_relationships.inspect
end
Какой именно запрос вы собираетесь оптимизировать? – iltempo
@iltempo - я обновил вопрос. – Backo