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
@industries = Industry.order(name: :asc).all
@job_count = Job.count
@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_industries = Industry.top_industries(9)
end
......
......@@ -19,7 +19,7 @@ class JobController < ApplicationController
def render_result(obj)
@keyword = obj.name
@data = obj.jobs.page(params[:page])
@data = obj.jobs.includes(:company, :cities).page(params[:page])
render 'result_data'
end
end
......@@ -12,7 +12,8 @@ class City < ApplicationRecord
scope :all_cities, -> { select :id, :name }
scope :top_cities, ->(number) do joins(:jobs)
.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)
end
......
......@@ -7,7 +7,8 @@ class Industry < ApplicationRecord
has_many :jobs, through: :industry_jobs
scope :top_industries, ->(number) do joins(:jobs)
.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)
end
......
......@@ -12,7 +12,7 @@
<%= link_to city.name, jobs_path(model: 'city', slug: city.slug),class: 'link_ct' %>
</div>
<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>
......
......@@ -11,7 +11,7 @@
<%= link_to industry.name, jobs_path(model: 'industry', slug: industry.slug), class: 'link_ct' %>
</div>
<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>
......
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