ruby-on-rails embed mongoid factory-bot fixtures

ruby on rails - Factory Girl+Mongoid documentos incrustados en accesorios



ruby-on-rails embed (2)

Digamos que tiene los siguientes documentos mongoides:

class User include Mongoid::Document embeds_one :name end class UserName include Mongoid::Document field :first field :last_initial embedded_in :user end

¿Cómo se crea una fábrica de fábrica que inicializa el nombre incrustado y la última inicial? Además, ¿cómo lo harías con una relación de embeds_many ?


Aquí hay una solución que le permite definir dinámicamente la cantidad de objetos incrustados:

FactoryGirl.define do factory :profile do name ''John Doe'' email ''[email protected]'' user factory :profile_with_notes do ignore do notes_count 2 end after(:build) do |profile, evaluator| evaluator.notes_count.times do profile.notes.build(FactoryGirl.attributes_for(:note)) end end end end end

Esto le permite llamar a FactoryGirl.create(:profile_with_notes) y obtener dos notas incrustadas, o llamar a FactoryGirl.create(:profile_with_notes, notes_count: 5) y obtener cinco notas incrustadas.


También estaba buscando este y mientras investigaba tropecé con un montón de código y los reconstruí todos (aunque me gustaría que hubiera documentos mejores), pero esta es mi parte del código. La dirección es una relación 1..1 y Phones es una relación 1..n con los eventos.

factory :event do title ''Example Event'' address { FactoryGirl.build(:address) } phones { [FactoryGirl.build(:phone1), FactoryGirl.build(:phone2)] } end factory :address do place ''foobar tower'' street ''foobar st.'' city ''foobar city'' end factory :phone1, :class => :phone do code ''432'' number ''1234567890'' end factory :phone2, :class => :phone do code ''432'' number ''0987654321'' end

(Y lo siento si no puedo proporcionar mis enlaces, estaban un poco desordenados)