2012-02-11 4 views
1

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

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

пользователь может иметь множество предметов, субъект может иметь множество документов и 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 

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

ответ

0

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

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

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

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

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

+0

Я новичок в рельсах ... что вы подразумеваете под (предполагая haml)? как бы выглядел взгляд без хамла? – user1203891

+0

http://haml-lang.com/ –

+0

Это один из вариантов языка шаблонов, который вы можете использовать в рельсах. Другим будет ERB. – siannopollo

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