У меня есть модели Order
, Item
и Product
.
class Order < ApplicationRecord
has_many :items, dependent: :destroy, inverse_of: :order
end
class Item < ApplicationRecord
belongs_to :order
belongs_to :product
end
class Product < ApplicationRecord
has_many :items
end
Мне нужно вычислить, сколько ящиков у каждого Item
(item.units/item.product.units_per_box
) вbefore_save
обратный вызов, но я не могу получить доступ к вложенным атрибутам, только к постоянным элементам.
У меня есть это в Order
модели:
before_save :calculate_boxes, on: [:create, :update]
def calculate_boxes
self.boxes = 0
self.items.each do |item|
self.boxes += item.units / item.product.units_per_box
end
end
Но как яПри этом он просто вычисляет сохраняемые элементы.
Не знаю, имеет ли это значение, но я использую Cocoon gem @ nathanvda для управления вложенными атрибутами в форме создания / редактирования.