у меня 3 простые модели
class Alpha < ActiveRecord::Base
has_many :betas
has_many :gammas
end
class Beta < ActiveRecord::Base
belongs_to :alpha
before_create :gen_gamma
def gen_gamma
gamma = alpha.gammas.build
gamma
end
end
class Gamma < ActiveRecord::Base
belongs_to :alpha
end
Я хочу, чтобы всякий раз, когда создавалась новая бета-версия, также должна быть новая гамма. Оба связаны с альфа.
Вот мой юнит тест
require 'test_helper'
class BetaTest < ActiveSupport::TestCase
test "creating a beta should create a gamma" do
a = Alpha.new
b = a.betas.build
a.save
assert a.gammas.size > 0, "alpha should have gammas"
end
end
Вызывается обратный вызов before_create, но связанная гамма не сохраняется, а бета сохраняется.
Странно то, что
a = Alpha.new
b = a.betas.build
g = a.gammas.build
a.save
работает!