1
假設這些模型:存儲數據
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :sections
end
class Section < ActiveRecord::Base
belongs_to :post
has_one :user, :through => :post
end
假設此控制器:
class SectionsController < ApplicationController
def latest_sections
@sections = Section.select(:name, :position, :updated_at)
.where(:public => true)
.order("updated_at DESC")
.limit(5)
end
end
最後這個觀點:
<ul>
<% @sections.each do |section| %>
<li>
<h1>Section updated on: <%= section.updated_at %></h1>
<%= section.position %> - <%= section.name %>
<% post = section.post; user = section.user %>
From Post: <%= link_to post.name, post %>
By User: <%= link_to user.username, user %>
</li>
<% end %>
</ul>
我的問題:
這會導致我在each
循環的每個循環的視圖中聲明的post
和user
變量的多個數據庫調用。
有沒有辦法對我來說,包括所有只有我需要的代碼上面的信息與一個單一的數據庫調用工作,並把它存儲在@sections
變量(我假設這將與連接的工作原理)。
爲了話,我想在@sections
變量這些信息存儲在一個數據庫調用:
- 節的
name
- 節的
updated_at
- 節的
position
- 部分的用戶
username
- 該用戶的
url_for
- 節的這篇文章的
name
- 節的這篇文章的
url_for
我將如何獲得這些信息?
(注:這一切都不是針對我的情況,它只是一個更大的場景一般示例)
是的,但是這會存儲所有'post'和'user'字段。指定我在查詢中需要的字段不是更有效嗎?還是我浪費精力試圖找出這個字段?謝謝。 – user2985898