Ruby on rails 使用关联后更新

Ruby on rails 使用关联后更新,ruby-on-rails,activerecord,callback,Ruby On Rails,Activerecord,Callback,我有一个艺术家链接到板模型。我想在更新后设置一个回调,每次更新艺人姓名时,我都想更改董事会的名称,如下所示: after_update { self.board.update_attribute(:name, name: name) } 不幸的是,我得到了这个错误: NoMethodError: undefined method `create' for nil:NilClass 我注意到下降是与协会本身有关的。为什么会这样?值得一提的是,我还有一个after\u create

我有一个
艺术家
链接到
模型。我想在更新后设置一个
回调,每次更新艺人姓名时,我都想更改董事会的名称,如下所示:

after_update { self.board.update_attribute(:name, name: name) }
不幸的是,我得到了这个错误:

NoMethodError:
       undefined method `create' for nil:NilClass
我注意到下降是与协会本身有关的。为什么会这样?值得一提的是,我还有一个
after\u create
回调,默认情况下会创建一个板:

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

class-Artist
创建关联板的方法是
create\u board(name:self.name)
,请检查
has\u one


你可以为1N做
.create
.build
(使用has\u many、has\u many-through或has和belown-to-many),但为11做不到。

因此,如果我理解正确,我的方法创建了一个板,但实际上没有传递可板引用,这反过来又导致更新后的
回调不起作用?不管怎样,谢谢您的帮助。@CarlEdwards,您遇到的错误是在创建过程中。实际上,你根本没有创建任何板。在创建时,
self.board
的值为零,因此您实际上调用了
nil.create
。太好了。谢谢你的澄清。
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