Commit 473812a9 by Ngô Trung Hưng

reduce amount query

parent 45098883
Pipeline #845 failed with stages
in 0 seconds
...@@ -6,7 +6,7 @@ class HomeController < ApplicationController ...@@ -6,7 +6,7 @@ class HomeController < ApplicationController
@industries = Industry.order(name: :asc).all @industries = Industry.order(name: :asc).all
@job_count = Job.count @job_count = Job.count
@cities = City.all_cities @cities = City.all_cities
@lasted_jobs = Job.order(created_at: :desc).limit(Job::NUMBER_LASTED_JOB) @lasted_jobs = Job.order(created_at: :desc).includes(:company, :cities).limit(Job::NUMBER_LASTED_JOB)
@top_cities = City.top_cities(9) @top_cities = City.top_cities(9)
@top_industries = Industry.top_industries(9) @top_industries = Industry.top_industries(9)
end end
......
...@@ -19,7 +19,7 @@ class JobController < ApplicationController ...@@ -19,7 +19,7 @@ class JobController < ApplicationController
def render_result(obj) def render_result(obj)
@keyword = obj.name @keyword = obj.name
@data = obj.jobs.page(params[:page]) @data = obj.jobs.includes(:company, :cities).page(params[:page])
render 'result_data' render 'result_data'
end end
end end
...@@ -12,7 +12,8 @@ class City < ApplicationRecord ...@@ -12,7 +12,8 @@ class City < ApplicationRecord
scope :all_cities, -> { select :id, :name } scope :all_cities, -> { select :id, :name }
scope :top_cities, ->(number) do joins(:jobs) scope :top_cities, ->(number) do joins(:jobs)
.group(:city_id) .group(:city_id)
.order(Arel.sql('count(jobs.id) DESC')) .select("cities.*, count(jobs.id) as job_count")
.order(Arel.sql('job_count DESC'))
.take(number) .take(number)
end end
......
...@@ -7,7 +7,8 @@ class Industry < ApplicationRecord ...@@ -7,7 +7,8 @@ class Industry < ApplicationRecord
has_many :jobs, through: :industry_jobs has_many :jobs, through: :industry_jobs
scope :top_industries, ->(number) do joins(:jobs) scope :top_industries, ->(number) do joins(:jobs)
.group(:industry_id) .group(:industry_id)
.order(Arel.sql('count(jobs.id) DESC')) .select('industries.*, count(jobs.id) as job_count')
.order(Arel.sql('job_count DESC'))
.take(number) .take(number)
end end
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<%= link_to city.name, jobs_path(model: 'city', slug: city.slug),class: 'link_ct' %> <%= link_to city.name, jobs_path(model: 'city', slug: city.slug),class: 'link_ct' %>
</div> </div>
<div class="ct_jobs_count"> <div class="ct_jobs_count">
<%= link_to "#{city.jobs.count} công việc", jobs_path(model: 'city', slug: city.slug),class: 'link_ct' %> <%= link_to "#{city.job_count} công việc", jobs_path(model: 'city', slug: city.slug),class: 'link_ct' %>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<%= link_to industry.name, jobs_path(model: 'industry', slug: industry.slug), class: 'link_ct' %> <%= link_to industry.name, jobs_path(model: 'industry', slug: industry.slug), class: 'link_ct' %>
</div> </div>
<div class="ct_jobs_count"> <div class="ct_jobs_count">
<%= link_to "#{industry.jobs.count} công việc", jobs_path(model: 'industry', slug: industry.slug), class: 'link_ct' %> <%= link_to "#{industry.job_count} công việc", jobs_path(model: 'industry', slug: industry.slug), class: 'link_ct' %>
</div> </div>
</div> </div>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment