我有 4 个模型,如下所示
- 用户(有 1 个个人资料、许多社区和许多代码)
- 个人资料(属于用户)
- 社区(有很多代码,属于用户)
- 代码(属于社区和用户)
现在我正在尝试显示code
属于特定社区的 10 条记录。
这code
包含外部表的信息,例如
username(in user table)
comment(in profile table)
point(in profile table)
现在,它发出了许多 sql 查询,因为我没有使用预先加载。
在这种情况下,我该如何自定义我的代码来进行这种急切加载,从而加快加载速度?
控制器/communities_controller.rb
#CanCan load_and_authorize_resouce
load_and_authorize_resource :find_by => :community_name,
模型/社区.rb
belongs_to :user
has_many :codes
模型/代码.rb
belongs_to :user, counter_cache: true
belongs_to :community, counter_cache: true
scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) }
模型/用户.rb
has_one :profile
has_many :communities
has_many :codes
模型/profile.rb
belongs_to :user
意见/社区/show.html.erb
<% @community.codes.recent.each do |code| %>
<%= render 'codes/code', {:code => code, :icon_photo => code.user.profile.user_avatar} %>
<% end %>
意见/社区/_code.html.erb
<tr>
Username: <%= code.user.username %> <br />
Code: <%= code.data %> <br />
Comment: <%= code.user.profile.comment %> <br />
Point: <%= code.user.profile.point.to_s %>
</tr>