Join-Modelle
has_and_belongs_to_many
durch Join-Modelle und has_many :through
ersetzen
- zwischen
Shift
undSkill
(Requirements
) - zwischen
User
undSkill
(Certificates
) - zwischen
User
undShift
(Jobs
)
Den Fähigkeiten des Benutzers entsprechenden Schichten direkt in der Datenbankabfrage filtern. Bei has_and_belongs_to_many
-Join-Tabelle scheitern folgende Ansätze daran, dass man in Rails die Join-Tabelle nicht direkt ansprechen kann:
select name, id from shifts where not exists
(select 1 from shifts_skills where
shifts_skills.shift_id == shifts.id and shifts_skills.skill_id not in (2,4))
bad_skill_ids = (Skill.all - current_user.skills).pluck(:id)
@shifts.where(Requirements.where(shift: :shift).where.not(skill: bad_skills).exists.not)