Я новичок в концепции встречного кэширования, и с некоторыми астрономическими временами загрузки на одной из главных страниц моего приложения я считаю, что мне нужно приступить к работе.
Большинство контрэшей, которые мне нужно реализовать, имеют определенные (простые) условия. Например, вот обычный запрос:
@projects = employee.projects.where("complete = ?", true).count
Я сталкиваюсь с проблемой запроса N+1
, описанной выше, когда отображаю форму, в которой перечисляется количество проектов для каждого сотрудника компании.
подход
Я действительно не знаю, что я делаю, поэтому поправьте меня!
# new migration
add_column :employees, :projects_count, :integer, :default => 0, :null => false
# employee.rb
has_many :projects
# project.rb
belongs_to :employee, :counter_cache => true
После миграции ... это все, что мне нужно сделать?
Как я могу работать в упомянутых выше условиях, чтобы минимизировать время загрузки?