首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Rails 3中联接查询中的所有表中获取数据

从Rails 3中联接查询中的所有表中获取数据
EN

Stack Overflow用户
提问于 2010-12-12 00:11:06
回答 3查看 2.9K关注 0票数 1

我希望连接树表并访问所有表(而不仅仅是一个表)中的数据。

这三个表称为:页面、文本、图像。

我试过了,但没有用:

代码语言:javascript
运行
复制
@texts = Page.joins([:texts, :images]).where(['pages.id = ?', @page])

主要内容是has_many文本和图像的页面。我想做一个查询,并在一个查询中从所有这些查询中获取数据。这在Rails 3中是怎么可能的?我在任何地方都找不到一个很好的例子,甚至在官方指南上也找不到。

更新

之所以这样做而不是@page.texts和@page.images,是因为我那时只能在“块”中打印它们。我想在印刷时把文字和图片混在一起。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-20 03:39:38

也许您可以创建一个新的“page元素”的文本和图像子类,这样您就可以在页面元素和页面之间建立一种关系。

另一方面,您可以使用Page.join(:texts).select('texts.*')并检索texts表中的列作为Page的虚拟列(您可以有一个Page,其中只有其他表字段的虚拟列,因此这个解决方案可能会变得脏)。

票数 2
EN

Stack Overflow用户

发布于 2010-12-12 00:36:41

有几件事:

  • 查看此页面以获得有关联接的帮助。请注意:include选项,该选项将允许您为性能考虑获取查询中的所有数据。您仍然需要通过ActiveRecord访问它(见下文)。

http://www.railway.at/articles/2008/04/24/database-agnostic-database-ignorant/

  • Do,您需要一个巨大的散列/数组中的所有数据?如果设置了关联,则只需执行以下操作:

@images= @page.images@texts = @page.texts

编辑:这个怎么样?

代码语言:javascript
运行
复制
@pages = Page.all(:include => [:texts, :images])
@pages.sort!{|a,b| a.texts.count <=> b.texts.count}

文档:http://ruby-doc.org/core/classes/Array.html#M002186

票数 0
EN

Stack Overflow用户

发布于 2010-12-12 00:27:58

这是值得一读的,并将有助于解决您的问题:

http://guides.rubyonrails.org/association_basics.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4419732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档