我正在尝试创建类似于taskrabbit或upwork的网站,其中成员可以发布作业,而工作人员可以提交作业的出价。这是我最近发布的一个问题的后续跟进。我正在处理搜索/作业显示功能,并希望返回仅包含符合以下条件的作业的结果集:
1)工作开始日期是将来 2)工人还没有投标 3)客户尚未接受来自不同工人的投标 4)工人具有工作所需的适当技能
感谢@jvillian,前两个要求是通过作业模型中的类完成的,但是当我尝试了多个变体来排除wins_bids表中有作业条目的记录时(要求3 - 意思是客户已接受出价并且不接受该作业的任何其他出价)或当该工作人员没有在worker_skills表中的job_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