1
我的數據庫中選擇子集有任務,其中有分配了涉及員工完成任務(除其他事項外)。用戶使條目,它始終有一個任務。我在入口創建代碼中發現一個錯誤,導致員工無法自動添加到作業列表中;我想編寫一個遷移程序,爲每個爲某項任務輸入條目並且沒有任何條目的員工創建分配。通過優雅的屬性
這是我目前的做法:
Task.all.each { |task|
assigned_employees = task.assignments.map(&:employee)
task.entries.select{ |entry| assigned_employees.exclude?(entry.employee) }.map(&:employee).uniq.each { |orphan_employee|
task.assignments.create(employee: orphan_employee, task: task)
}
}
的選擇到MAP到uniq的是醜陋的。我可以更優雅地做到這一點嗎?值得注意的是:entry.employee是經歷另一個類的委託。
編輯:我想我會回來解決這個問題;一位高級程序員將此調用重寫爲使用連接和採摘。