this rails newbie. know can use before_save , after_save hooks in model control writing has_many record when create parent, don't know how pass values want created in child record.
in scenario, user has_many memberships schools. @ moment, when create user, creates blank membership record doesn't have correct initial values. how pass user values needs insert has_many record @ init?
what have been doing manually creating membership record after user, gives me 2 memberships, 1 correct field values, 1 initial "nil" values, , manually created record.i.e. in test
class user has_many :memberships has_many :group_user_memberships has_many :schools, through: :memberships #creates membership nil values in fields @user = create(user_type) #creates correct, secondary memberhsip member = @user.memberships.create(school_id: school.id, role_id: role.id) what don't want have create user, find membership id , update school_id in membership a) many sql operations , b) there no way of getting correct record created user.
because user has relationship schools through memberships, hoping able find way of passing school_id user , nested_attributes insert school_id
what want, populate school , role when user created, , have these create membership record. think related before/after hooks, love know best solution
thanks in advance
edit
so, code use in test, using factory girl. maybe part of question - if use rails console, u = user.create(:firstname => "dsd", :surname => "", :email => "aa@sdd.com") u.confirm!
i user sql insert without membership (or @ least log shows no membership insert)
insert `users` (`active`, `confirma..... etc in test, using factory girl, membership. maybe factory girl, can't see in factory membership. here user factory
factorygirl.define factory :user sequence(:email){ |n| "user#{n}@example.com".downcase } firstname "mystring" surname "mystring" password "a1234567" active false factory :an_administrator after(:create){|a| a.roles << create(:admin_role)} end factory :a_pupil after(:create){|a| a.roles << create(:pupil_role)} end end end and role factory
factorygirl.define factory :role factory :admin_role |f| name 'administrator' end factory :pupil_role |f| name 'pupil' end end end so yes, guess factory girl - creating user_with_school_membership might answser perhaps?
Comments
Post a Comment