Relacje i callback

[code]class Offer < ActiveRecord::Base
belongs_to :conf, :dependent => :destroy
end

class Conf < ActiveRecord::Base
has_one :offer

before_save :recost, :if => Proc.new { |conf| conf.offer.nil? }

def recost
self.cost = Conf.calculate(…parametry…)
end

def self.calculate(…parametry…)
#obliczenia
end
end[/code]
Czy ktoś mi mógł wyjaśnić, dlaczego ten callback wykonuje się zawsze - niezależnie od tego, czy Conf powstaje przy tworzeniu Offer (czyli tworzy się asocjacja Conf-Offer), czy w innym, bez Offer (Offer=nil)? Zależało mi, żeby wykonywał się tylko w tej drugiej sytuacji.

która wersja rails?

Jeżeli < 3.1 to dlatego że relacej nei są zwrotne. To że utworzysz Conf przy okazji tworzenia Offer nie znaczy że Conf wie o tym że jest powiązany z Offer PRZED zapisaniem.

3.1.3. Jest jakieś inne rozwiązanie, czy może zrobić to po prostu jako after_save i w recost puścić jeszcze raz save?