【发布时间】:2011-05-05 19:38:46
【问题描述】:
使用熟悉的 Rails 示例关联,其中 Posts 有很多 Comments:
控制器
...
@posts = Post.find(:all)
...
查看
...
<% @posts.comments.each do |comment| %>
...
cmets 关联在视图中被延迟加载。我想确保在我们渲染视图之前所有数据库查询都发生在控制器中。对于这个例子来说这没什么大不了的,但它应该可以更容易地在更复杂的例子中发现 SQL N+1 查询。
我想看的控制器代码是这样的:
...
@posts = Post.find(:all, :include => :comments)
...
一旦我们开始渲染视图,有没有办法防止延迟加载关联?我希望有一种方法可以在关联丢失时引发异常,但仅限一旦我们在视图中。
有没有插件可以做到这一点?
【问题讨论】:
-
从那以后你找到更好的解决方案了吗?
标签: ruby-on-rails ruby