Использование after_update с ассоциациями - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть Artist, который связан с Board моделью.Я хотел бы установить обратный вызов after_update, чтобы при каждом обновлении имени артиста я хотел изменить имя доски следующим образом:

after_update { self.board.update_attribute(:name, name: name) }

К сожалению, я получаю эту ошибку:

NoMethodError:
       undefined method `create' for nil:NilClass

Я заметил, что выпадение связано с самой ассоциацией.Почему это происходит?Для чего бы это ни стоило, у меня также есть обратный вызов after_create, который по умолчанию создает доску:

after_create { board.create(name: self.name) }

class Artist < ApplicationRecord
  has_one :board, as: :boardable, dependent: :destroy

  after_create { board.create(name: self.name) }
  after_update { self.board.update_attribute(:name, name: name) }
end

1 Ответ

0 голосов
/ 21 сентября 2018

Метод создания связанной доски: create_board(name: self.name), проверьте ссылки для has_one https://guides.rubyonrails.org/association_basics.html#has-one-association-reference

Вы можете сделать .create или .build для 1 <-> N (с has_many, has_many через или имеет и принадлежит многим), но для 1 <-> 1 вы не можете.

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