Rails ActiveRecord - исключая результаты, если запись в другой таблице - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь создать сайт, похожий на taskrabbit или upwork, где член может опубликовать работу, а работник может подать заявку на работу. Это продолжение вопроса, который я недавно опубликовал. Я работаю над функцией поиска / отображения заданий и хочу вернуть набор результатов только с заданиями, которые соответствуют следующим критериям:

1) дата начала работы в будущем 2) работник еще не подал заявку на работу 3) клиент еще не принял предложение от другого работника 4) работник имеет соответствующие навыки, необходимые для работы

Благодаря @jvillian первые 2 требования выполняются с помощью класса в модели задания, но когда я попробовал несколько вариантов, чтобы исключить записи, в которых есть запись для задания в таблице win_bids (требование 3 - значение клиент принял ставку и больше не принимает заявки на работу) или если у работника нет всех навыков, перечисленных в таблице job_skills в таблице worker_skills (требование 4 - это означает, что у него нет всех навыков) требуется для работы)

Как я могу изменить критерии поиска в классе Job для соответствия требованиям 3 и 4?

Модели следующие:

class Worker < ApplicationRecord
    has_many :bids
    has_many :winning_bids
    has_many :abilities, through: :job_options
end

class Skill < ApplicationRecord
    has_many :job_skills
    has_many :jobs, through: :job_skills
    has_many :worker_skills
    has_many :skills, through: :worker_skills
end

class WorkerSkill < ApplicationRecord
    belongs_to :worker
    belongs_to :skill
end

class Job < ApplicationRecord
    has_many :bids
    has_many :skills
    has_many :job_skills
    has_many :skills, through: :job_skills

    def self.available_for_bid(worker)
        where.not(id: worker.job_ids).where('start_date > ?', Date.today)
    end
end

class JobSkill < ApplicationRecord
    belongs_to :job
    belongs_to :skill
end

class Bid < ApplicationRecord
    belongs_to :job
    belongs_to :worker
end

class WinningBid < ApplicationRecord
  belongs_to :job
  belongs_to :worker
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...