Я пытался, но это тоже не работает.

я есть семейный класс, определенный так:

class Family < ActiveRecord::Base
  after_initialize :initialize_family
  belongs_to :user
  validates :user, 
       :presence => true

  validates :name,   
       :presence => true,          
       :length => { :maximum => 30 },
       :format => { :with => /\A[a-zA-Z0-9\-_\s\']+\z/i}

  def initialize_family
    if self.name.blank? && self.user
        self.name = "#{self.user.profile_full_name}'s Family"
    end
  end
end

На моих фабриках.rb у меня есть:

Factory.define :family do |f|
   f.association :user, :factory => :user
end

В моем family_spec.rb у меня есть

let(:family) { Factory(:family) }

Но это не так с:

1) Family is valid with valid attributes
     Failure/Error: let(:family) { Factory(:family) }
     ActiveRecord::RecordInvalid:
       Validation failed: Name can't be blank, Name is invalid, Languages can't be blank, Languages is too short (minimum is 1 characters)
     # ./spec/models/family_spec.rb:8:in `block (2 levels) in <top (required)>'
     # ./spec/models/family_spec.rb:10:in `block (2 levels) in <top (required)>'

Используя отладчик, я вижу, что когда after_initialize вызывается, self.user равен nil. Почему это происходит? Если я звоню семье с созданием или новым, все работает нормально

Спасибо за любую помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос