0

以下に例を示します。

class Foo < AR::Base
  has_many :bars, :as => :barable, :dependent=> :destroy
  accepts_nested_attributes_for :bars, :allow_destroy => true
end

class Bar < AR::Base
   belongs_to :barable, :polymorphic => true  
end

class Baz < Bar

  before_save do 
    raise "Hi"
  end

end

「Foo」のフォームでfields_for :bars_attributesは、隠しフィールドtypeが「Baz」に設定されている場所があります。「Baz」は正常に作成されましたが、コールバックは起動しません。(ただし、コンソールで「Baz」を手動で作成すると起動します。)

アドバイスをいただければ幸いです。

4

2 に答える 2

0

Foo.rb で追加の関連付けを指定する必要があります

has_many :bazs
# or
# has_many :bazs class_name: 'ModuleName::Baz' # if you scoped your child classed within some module

あなたがそれをするなら、あなたの

before_save do 
  raise "Hi"
end

たとえば、発火します@current_user.bazs.build

于 2014-08-20T16:48:31.650 に答える