|
|
1
9
正如Kevin所建议的,计数器缓存是最简单的选择,绝对是我要使用的。
如果您使用的是Rails 2.3,并且希望这是默认的顺序,那么您可以使用新的默认\u scope方法:
books_count是执行计数器缓存行为的字段,可能有比直接在默认范围内使用它更好的方法,但它提供了一个想法,并将完成任务。 编辑: 在回应询问计数器缓存是否可以工作的评论时,如果一个非Rails应用程序改变了数据,它可以,但不是以默认的方式,随着Rails的增加和减少计数器在节省时间。您可以做的是在保存后回调中编写自己的实现。
现在您没有安装计数器缓存,但是如果您根据计数器缓存约定在数据库书籍中命名字段,则在查找时:
它仍将使用计数器缓存的数字,而不是执行数据库查找。当然,这只在Rails应用程序更新表时有效,因此如果其他应用程序执行了某些操作,那么在Rails应用程序返回之前,您的号码可能不同步,必须保存。唯一能解决这个问题的方法是,如果你的Rails应用程序不经常查找数据而使其无关紧要,那么cron任务就是同步数据。 |
|
|
2
9
取自 http://www.ruby-forum.com/topic/164155
|
|
|
3
7
我建议计数器缓存图书计数作为author的另一个属性(rails通过关联选项支持这一点)。这是迄今为止最快的方法,Rails非常擅长确保计数保持同步。 |
|
|
4
3
假设轨道3
注意:这将返回一个记录数组,而不是ActiveRecord:关系。 注意2:使用SIZE而不是COUNT,因为COUNT将执行对数据库的SQL调用。 |