В моем проекте у меня есть следующие три класса:
class User < ApplicationRecord
has_many :portfolios, dependent: :destroy
has_many :positions, through: :portfolios
end
class Portfolio < ApplicationRecord
belongs_to :user
has_many :positions, dependent: :destroy
end
class Position < ApplicationRecord
belongs_to :portfolio
end
Когда я пытаюсь построить позицию непосредственно из пользовательской модели (user.positions.build(attributes)
), передавая существующий аргумент portfolio_id в качестве одного из атрибутов, я получаю следующую ошибку:
ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection (Cannot modify association 'User#positions' because the source reflection class 'Position' is associated to 'Portfolio' via :has_many.
Почему это случилось? Я чувствую, что здесь есть чему поучиться, но на самом деле я этого не понимаю!
Приложение: Я думаю, что мои ассоциации имеют смысл: портфель должен принадлежать только одному пользователю, позиция - только одному портфелю, а портфель должен иметь несколько позиций, а пользователь - несколько портфелей.