Rails 3 расширенный запрос - PullRequest
1 голос
/ 11 февраля 2012

Привет, я новичок в rails 3 и не могу понять, как создать сложный запрос.

В представлении мне нужно показать список документов, каждый из которых имеет свой связанный PackageType, сгруппированный по темам для пользователя.

у пользователя может быть много тем, у субъекта может быть много документови packetType может иметь много документов

. Существует четыре таблицы:

users
subjects
documents
packet_types

, так что вот мои ассоциации моделей

class User < ActiveRecord::Base

    has_many :subjects

end

class Subject < ActiveRecord::Base

belongs_to :user
has_many :documents

end

class Document < ActiveRecord::Base

    belongs_to :subject
    belongs_to :packetType

end

class PacketType < ActiveRecord::Base

    has_many :documents

end

В контроллере, как я это называюзапрос?и в представлении, как я могу отобразить имя субъекта, имя документа, которое принадлежит каждому субъекту, и имя пакета_типа, которое принадлежит каждому документу для пользователя?

1 Ответ

0 голосов
/ 11 февраля 2012

Я думаю, ваш запрос будет выглядеть примерно так:

@subjects = current_user.subjects.includes(:documents => :packetType)

Этот запрос будет загружать все темы пользователей, а затем будет загружать все документы, принадлежащие этой теме, и тип пакета для документа. Так что, на ваш взгляд, это будет выглядеть примерно так (при условии хамла):

- @subjects.each do |subject|
  = subject.name
  - subject.documents.each do |document|
    = document.name
    = document.packetType.name

Поскольку все ваши запросы к базе данных выполнялись в одной строке контроллера, представление просто должно прокручивать все данные, которые вы только что загрузили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...