我有3個簡單的模型導軌的has_many協會
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
我想的是,只要創建一個新的Beta版,這也應該是一個新的Gamma值。兩者都與alpha相關聯。
這裏是我的單元測試
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
作品!
在測試中,使用''''''保存':'a.save!'版本。任何錯誤?並在'gen_gamma'上放置一個斷點:它是否被調用? – Zabba 2010-11-09 07:01:41
即使保存!沒有gammas,但回調被稱爲。我也嘗試過自動保存選項,或者重新加載alpha,但沒有成功 – gschaden 2010-11-09 08:10:20