Я не знаю, как я описываю этот вопрос, сначала я хочу показать мою модель, поддерживающую отношение, как показано ниже
category.rb
class Category < ApplicationRecord
has_many :job_categories, dependent: :destroy
has_many :jobs, through: :job_categories
end
job.rb
class Job < ApplicationRecord
has_many :job_categories, dependent: :destroy
has_many :categories, through: :job_categories
end
job_category.rb
class JobCategory < ApplicationRecord
belongs_to :category, counter_cache: :jobs_count
belongs_to :job
end
schema.rb
create_table "categories", force: :cascade do |t|
t.string "name"
t.string "parent"
end
parent
- это столбец, который поддерживает группу, подобную Technology
и под этим ruby,rails,programming
и т. Д., Который связан с технологией.
Ниже приведен мой запрос на показ группы по категориям
Category.select(:id, :name, :parent).group_by{|p| p.parent}
, и он выглядит так:
Технология
Теперь я хочу показать все рабочие места в группе по Technology , У меня есть запрос для этого как
Job.joins(:categories).where('lower(categories.parent) LIKE lower(?)', "%#{params[:parent]}%")
, и он показывает неправильный вывод, например, если у меня есть только одно задание с категориями ruby,rails
, то это одно задание показывается два раза, одно для рубина и одно длярельсы.
спасибо