您将如何处理复杂的网页,其中您必须显示一个具有大量关系的用户帐户(15+)
翻译数据保存在不同的表格中(globalize2 / 3),因此查询数量增加到30 +。
放置ACL和一些日志记录,你有时会得到45个以上的查询65 +
我不想在多个屏幕上拆分页面在一个屏幕上需要所有数据。
目前我已经在Rails中的全局变量中为User预加载了所有关系表,但它工作正常,除了使用所有同步和转换数据维护缓存很复杂。
我尝试过memcached,但速度很慢,因为每个对象都必须在每次请求时被序列化/反序列化。
处理此类页面的最佳方法是什么?
答案 0 :(得分:3)
如果您的单个模型具有一堆关系,那么使用“include”进行热切加载应该可以帮助您。在Rails 2.3它的工作原理如下:
User.find(1, :include => [:relationship1, :relationship2, :relationship2])
答案 1 :(得分:0)
同意,ActiveRecord的“包含”选项应该有很多帮助。但是不要忘记你也可以嵌套关联。例如,假设你有以下设置。
User
- Blog
- Posts
- Comments
- Images
- Comments
- Videos
- EncodedVideos
可以在ActiveRecord中设置为:
User.find(:all, :include => {:user => [{:blog => {:posts => :comments}}, {:images => :comments}, {:videos => :encoded_videos}]})
希望这有帮助。
答案 2 :(得分:0)