在具有 1->N->N 关联的场景中。例如:帖子->评论->投票(投票将是对评论投票的人的姓名列表)。要显示包含查询的页面,可能如下所示:
@post = Post.where(:id => 100).includes({:comments => :votes}).first
我开始添加缓存支持。这意味着如果评论部分已经被缓存,我将不需要一直运行包含评论/投票。所以我想知道是否有办法让代码看起来像:
# controller
@post = Post.find(100)
# view
<% cache('comments', @post.last_comment_time do %>
<% @post.includes({:comments => :votes}).comments.each do |comment| # ???? %>
<% end %>
运行“后查询”包括,将“填写”关联。因此@post.comments 将被填充,并且每条评论都将包含所有投票。有没有办法做到这一点?
PS 我知道视图不是运行查询的最佳位置,这只是一个示例。