Ruby on rails Rails 3高级查询

Ruby on rails Rails 3高级查询,ruby-on-rails,Ruby On Rails,嗨,我是rails 3的新手,不知道如何创建高级查询 在视图中,我需要显示一个文档列表,每个文档都有相关的packetType,按照用户的主题进行分组 一个用户可以有许多主题,一个主题可以有许多文档,一个packetType可以有许多文档 共有四个表格: users subjects documents packet_types 这是我的模型 class User < ActiveRecord::Base has_many :subjects end class Subje

嗨,我是rails 3的新手,不知道如何创建高级查询

在视图中,我需要显示一个文档列表,每个文档都有相关的packetType,按照用户的主题进行分组

一个用户可以有许多主题,一个主题可以有许多文档,一个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
class用户

在控制器中,如何调用此查询?在视图中,如何显示用户的主题名称、属于每个主题的文档名称以及属于每个文档的数据包类型名称?

我认为您的查询如下所示:

@subjects = current_user.subjects.includes(:documents => :packetType)
该查询将加载所有用户主题,然后加载属于该主题的所有文档以及文档的packetType。那么,在您看来,它看起来是这样的(假设为haml):


由于所有数据库查询都是在控制器中的一行中完成的,因此视图只需旋转浏览刚才加载的所有数据。

我是rails新手。。。你所说的(假设haml)是什么意思?如果没有haml,视图会是什么样子?它是rails中可以使用的模板语言的一种选择。另一个是雇员再培训局。
- @subjects.each do |subject|
  = subject.name
  - subject.documents.each do |document|
    = document.name
    = document.packetType.name