Ruby on rails Rails 3高级查询
嗨,我是rails 3的新手,不知道如何创建高级查询 在视图中,我需要显示一个文档列表,每个文档都有相关的packetType,按照用户的主题进行分组 一个用户可以有许多主题,一个主题可以有许多文档,一个packetType可以有许多文档 共有四个表格: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
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