Я знаю, что это должно быть просто, но я действительно потерян.Rails 4 - значения сумм, сгруппированные по внешнему ключу
Три модели: Работа, задачи и операции, как указано ниже:
Job
has_many :tasks
Task
belongs_to :job
belongs_to :operation
Operation
has_many :jobs
Job
имеет атрибут, total_pieces
, который говорит мне, сколько частей вам нужно. Для каждого Job
вы можете добавить номер Tasks
, который может принадлежать разным Operations
(резка, сверление и т. Д.), И для каждой задачи вы можете установить несколько штук. Я не знаю заранее, сколько Operations
понадобится для одного Job
, но мне нужно предупредить пользователя о количестве оставшихся частей для этого Operation
, когда вставляется новый Task
.
сотворим пример:
Job 1: total_pieces=100
- Task 1: operation 1(cutting), pieces=20
- Task 2: operation 1(cutting), pieces=30
- Task 3: operation 2(drilling), pieces=20
Мне нужно, чтобы предупредить пользователя о том, что они по-прежнему нужно вырезать 50 штук и пробурить 80. Гипотетически, если я добавлю:
- Task 4: operation 3(bending), pieces=20
Мне нужно предупредить пользователя о том, что им также необходимо сгинуть 80 штук.
До сих пор я удался перечислить все виды Operations
для каждого Job
с помощью map
, но теперь мне нужно суммировать все части Task
с тем же Operation
типа в Job
, и только для тех, кто Operations
в настоящее время Tasks
, принадлежащих этому Job
.
Есть ли способ сделать это, используя map
? Или мне нужно написать запрос вручную?
EDIT: это то, что мне удалось исправить в настоящий момент.
Метод operations_applied
Иова дает мне список идентификаторов для всех Operations
USEND в Tasks
очередей для Job
.
Тогда другой способ, pieces_remaining for(operation)
, дает мне оставшиеся кусочки для одного operation
.
Наконец, в Job
Мне нужно, я пробовал все operations_applied
все pieces_remaining_for
.
Я знаю, что это не особенно элегантно, но пока это работает, любые идеи для улучшения этого? Спасибо.
Спасибо, это намного лучше, чем мое исправленное решение! –