Кажется, проблема в том, что адрес на самом деле не удалось сохранить.не из-за проверки, а из-за ошибки в методе before_create (и да, я знаю, что не предоставил вам объект адреса ... Я не думал, что это важно в то время!).
class Address < ActiveRecord::Base
# relationships
# Validators
validates_presence_of :city, :state, :country, :first_name, :last_name, :address_1
before_create :check_state
before_create :check_country
def check_state
retval = true
state.upcase!
if country == "US" and !US_STATES.map{|s| s[1]}.include?(state)
errors.add(:state, "Must be valid")
retval = false
end
retval
end
end
Проверка состояния не удалась.Но это означало, что адрес прошел «действительный?»звонок, который, кажется, все активные записи заботится.(Этот метод действительно должен быть валидацией)
Я перешел на это (спасибо enokd за ссылку!):
@user = User.new(params[:user].merge(:first_name => @address.first_name, :last_name => @address.last_name))
@user.build_subscription(:subscription_plan_id => @subscription_plan.id)
@user.build_current_shipping_address(address_info.merge(:country => "US"))
Я не удосужился провести полное исследование, ноесли адрес не сохраняется, он останавливает весь @ user.save!Лично я думаю, что это небольшая ошибка, возможно, или, конечно, неожиданное поведение, но что я знаю!