- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
假设我有 Book 模型和 Author 模型。我想列出所有按书数排序的作者。最好的方法是什么?
我知道如何在 SQL 中执行此操作,方法是使用嵌套选择或某些连接执行 where .. in。但我想知道的是如何使用 ActiveRecord 很好地做到这一点。
最佳答案
正如 Kevin 所建议的,counter_cache 是最简单的选项,我绝对会使用它。
class Author < ActiveRecord::Base
has_many :books, :counter_cache => true
end
class Book < ActiveRecord::Base
belongs_to :author
end
如果您使用的是 Rails 2.3,并且您希望这是默认顺序,您可以使用新的 default_scope 方法:
class Author < ActiveRecord::Base
has_many :books, :counter_cache => true
default_scope :order => "books_count DESC"
end
books_count 是执行计数器缓存行为的字段,可能有比在默认范围内直接使用它更好的方法,但它为您提供了想法并将完成工作。
编辑:
针对询问如果非 Rails 应用程序更改数据,counter_cache 是否会工作的评论,它可以,但不是默认方式,因为 Rails 在保存时递增和递减计数器。您可以做的是在 after_save 回调中编写您自己的实现。
class Author < ActiveRecord::Base
has_many :books
after_save :update_counter_cache
private
def update_counter_cache
update_attribute(:books_count, self.books.length) unless self.books.length == self.books_count
end
end
现在您还没有安装 counter_cache,但是如果您按照 counter_cache 约定将数据库中的字段命名为 books_count,那么当您查找时:
@Author = Author.find(1)
puts @author.books.size
它仍然会使用计数器缓存的数字而不是执行数据库查找。当然,这仅在 Rails 应用程序更新表格时有效,因此如果另一个应用程序执行某些操作,那么您的数字可能会不同步,直到 Rails 应用程序返回并必须保存。我能想到的解决这个问题的唯一方法是一个 cron 作业来同步数字,如果你的 Rails 应用程序没有足够频繁地查找东西以使其无关紧要。
关于ruby-on-rails - 如何使用 ActiveRecord 按书籍数量对作者进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958558/
揭开网络爬虫的神秘面纱 嗨,亲爱的读者朋友们,今天我想和大家分享一下我对Python3网络爬虫书籍的一些心得体会。网络爬虫就像是一位善于探险的探险家,穿越数字世界的丛林,捕捉着信息的脉搏。 历经荆棘,
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是 JavaScipt 新手,我无法理解下面的代码 maskat.lang.Class.declare("maskat.key.KeyEventManager", { _static: {
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在开发一个应用程序,允许用户用户查看他们有权访问的收件箱的内容。除了 之外,我很难找到一种搜索全局地址列表的方法 AddressEntries entries = global.AddressEn
人们常常问我有什么C++和编程的书籍推荐,今天就为大家分享了几本 第一个注意项:如果你打算学习C++,请务必学习最新版的C++ 2011。这个版本的C++移除了许多由C++强大带来的一些痛苦之处。
我需要为一本书创建一个索引。虽然乍一看这项任务很简单——按第一个字母对单词进行分组,然后对它们进行排序——但这个显而易见的解决方案仅适用于美国语言。然而,真正的词要复杂得多。参见 http://en.
我是一名开发人员,将我们的 IIS 服务器的管理职责交给了他。在设置网站、虚拟目录等方面,我对 IIS 相当熟悉,但我想如果我要完全成为服务器的管理员,我最好尽快跟上。 有什么关于 IIS 书籍的推荐
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如果我在网站上看到很酷的效果,我会查看 jquery 的源代码,通常我可以理解它,但是,我正在查看 http://www.mckinsey.com 的 slider 。并查看了用于进行页面幻灯片的 j
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
方法(对象的函数)可以使用“this”关键字来引用对象的变量。 函数的属性可以引用函数变量吗? 例如:- function foo() { var x=5; }
我有以下型号。 Book has Articles (Article has foreign key to Book) Article has Images (Article has upto #ma
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
我是一名优秀的程序员,十分优秀!