ActiveRecord - Ассоциации 2 уровня ниже не сохраняются
У меня есть следующие модели
class Poll < ApplicationRecord
has_many :options, dependent: :destroy
has_many :votes, through: :options
accepts_nested_attributes_for :options
end
class Option < ApplicationRecord
belongs_to :poll
has_many :votes, dependent: :destroy
end
class Vote < ApplicationRecord
belongs_to :option
end
Когда я пытаюсь создать новый вариант голосования, а затем пытаюсь сохранить сообщение, оно не отображается:
@poll = Poll.first
@poll.options.first.votes.length # returns 3
@poll.options.first.votes.new
@poll.options.first.votes.length # returns 4
@poll.save # returns true
@poll.votes.length # returns 3.... ¯\_(ツ)_/¯
Похоже, хотя я спасаю poll
, ассоциации на 2 уровня ниже не сохраняются.
Я также попытался решить это так:
@poll.votes.new(option: @poll.options.first)
@poll.save
Но это дает мне следующую ошибку:
ActiveRecord:: HasManyThroughCantAssociateThroughHasOneOrManyReflection: Невозможно изменить ассоциацию "Голосование # опроса", поскольку исходный класс отражения "Голосование" связан с "Опцией" с помощью:has_many. из /home/dbugger/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/associations/through_association.rb:94:in `provide_mutable'