Como posso criar / criar uma associação muitos-para-muitos em factory_girl?

eu tenho umPerson modelo que tem um relacionamento muitos-para-muitos com umEmail modelo e quero criar uma fábrica que permita gerar um nome e sobrenome para a pessoa (isso já foi feito) e criar um endereço de email baseado no nome dessa pessoa. Aqui está o que eu tenho para criar umpersonnome:

Factory.sequence :first_name do |n|
  first_name = %w[FirstName1 FirstName2] # ... etc (I'm using a real subset of first names)
  first_name[(rand * first_name.length)]
end

Factory.sequence :last_name do |n|
  last_name = %w[LastName1 LastName2] # ... etc (I'm using a real subset of last names)
  last_name[(rand * last_name.length)]
end

Factory.define :person do |p|
  #p.id ???
  p.first_name { Factory.next(:first_name) }
  p.last_name { Factory.next(:last_name) }
  #ok here is where I'm stuck
  #p.email_addresses {|p| Factory(:email_address_person_link) }
end

Factory.define :email_address_person_link do |eapl|
  # how can I link this with :person and :email_address ? 
  # eapl.person_id ???
  # eapl.email_address_id ???
end

Factory.define :email_address do |e|
  #how can I pass p.first_name and p.last_name into here?
  #e.id ???
  e.email first_name + "." + last_name + "@test.com"
end

questionAnswers(2)

yourAnswerToTheQuestion