Если я правильно понимаю вопрос, вам нужна только одна запись в БД для комбинации записей :attendance_month
, :project_id
и :site_id
?
Я бы сделал это
Добавьте настраиваемую проверку в модель
validate :validate_record_is_unique
Затем для самого метода (вы можете изменить сообщение на любое очевидное)
def validate_record_is_unique
# Check if a matching record exists
rec = ProjectSite.where('attendance_month = ? AND project_id = ? AND site_id = ?', self.attendance_month, self.project_id, self.site_id)
if rec.count > 0
errors.add :attendance_month, 'A record for this site and project already exist for that month.'
end
end