Я запускаю Ruby on Rails 3.1. Я хотел бы охотно загружать связанные объекты «второй степени», применяя некоторые условия, но у меня проблемы.Неисправность при загрузке связанных объектов «второй степени»
кажется, что я уже решил part of my issue с помощью:
article_categories =
article
.categories
.includes(:comments => [:category_relationships])
.where(:category_relationships => {:user_id => @current_user.id})
где привлеченными классы формулируется следующим:
class Category < ActiveRecord::Base
has_many :comment_relationships
has_many :comments,
:through => :comment_relationships
...
end
class Comment < ActiveRecord::Base
has_many :category_relationships
has_many :categories,
:through => :category_relationships
...
end
Приведенный выше код (это, кажется, сделать это правильно):
- загружает все
categories
, ухаживая заhas_many :through
:category_relationships
(то есть, заботясь о состоянии.where(:category_relationships => {:user_id => @current_user.id})
); - все грузы
article.comments.where(:user_id => @current_user.id)
.
Однако, я хотел бы сделать несколько больше:
- в заказе получен
categories
с помощью:position
атрибута присутствует вcategory_relationships
таким образом, чтобы полученные в результатеarticle_categories
являются упорядочены по позиции; - до с нетерпением загружают также
category_relationship
объектов, гдеuser_id == @current_user.id
, так как вышеуказанный код этого не делает.
Как я могу это сделать, воспользовавшись удобной загрузкой?
Есть ли причина, по которой вы используете две разные таблицы соединений между 'Category' и' Comment'? – amencarini