ActiveRecord - Ассоциации 2 уровня ниже не сохраняются - PullRequest
0 голосов
/ 17 мая 2019

У меня есть следующие модели

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 '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...