代码之家  ›  专栏  ›  技术社区  ›  Carl Edwards monkbroc

使用关联后更新

  •  0
  • Carl Edwards monkbroc  · 技术社区  · 6 年前

    我有一个 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 回复  |  直到 6 年前
        1
  •  1
  •   arieljuod    6 年前

    create_board(name: self.name) ,检查参考资料 has_one https://guides.rubyonrails.org/association_basics.html#has-one-association-reference

    你能做到的 .create .build