我有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