你将如何处理复杂的网页,其中你必须显示一个用户帐户与许多关系(15+)
翻译数据保存在单独的表中(globalize2/3),因此查询上升到30+。
设置ACL和一些日志记录,您将得到45+查询,有时是65+
我不想在多个屏幕上拆分页面,所有数据都需要在一个屏幕上。
目前,我已经在Rails中的全局变量中为用户预加载了所有关系表,它工作得很好,只是维护包含所有同步和转换数据的缓存比较复杂。
我尝试过memcached,但速度很慢,因为每个对象都必须在每次请求时序列化/反序列化。
处理此类页面的最佳方式是什么?
发布于 2010-09-21 05:20:23
如果您有一个具有一堆关系的单一模型,那么使用"include“加载应该会对您有很大帮助。在Rails 2.3中,它的工作原理类似于:
User.find(1, :include => [:relationship1, :relationship2, :relationship2])发布于 2010-09-21 05:28:52
同意,ActiveRecord的“包含”选项应该会有很大帮助。但是,不要忘记您还可以嵌套关联。例如,假设您有以下设置。
User
- Blog
- Posts
- Comments
- Images
- Comments
- Videos
- EncodedVideos可以在ActiveRecord中将设置为:
User.find(:all, :include => {:user => [{:blog => {:posts => :comments}}, {:images => :comments}, {:videos => :encoded_videos}]})
希望这能有所帮助。
发布于 2010-10-28 23:47:13
另一种方法可能是将集合存储在客户端浏览器下
http://www.gudasoft.com/english/development/rails-development/10/28/1342/store-data-in-the-browser-with-rails-and-jquery/2010
https://stackoverflow.com/questions/3755452
复制相似问题