У меня есть 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
Я хочу, что всякий раз, когда создается новая бета-версия, то также должна быть новая гамма. Оба связаны с альфой.
Вот мой блок тест
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
работает!
В тесте, используйте '!' версия 'save':' a.save! '. Любые ошибки? И поставить точку останова на 'gen_gamma': это вызов? – Zabba
даже сэкономить! нет гамм, но обратный вызов называется. Я также экспериментировал с опцией автосохранения или перезагрузкой альфы, но не успел – gschaden