Not sure why I can’t seem to find a very clear example or description of what I’m trying to do, and I’m afraid I’m just temporarily stuck in “Rails head”. But I can’t seem to find a definitive “best practices” example of how to create a set of associated records transactionally in Ecto.
Case in point: Playing around with Ueberauth, and I have a User record which has_many OAuth records, which stores the identifying information for that OAuth source (Facebook, Twitter, etc). The idea is that one User may have associated multiple OAuth sources, and can log in with any of them.
So, in the case where this is a brand new login, say from Facebook, I need to create the OAuth record AND the User record, preferably at the same time. The OAuth record belongs_to User (has the user_id foreign key), so User has to be saved first.
Do I have to roll my own transaction around the two inserts? Or can I just set the user association in OAuth to the User changeset, and have Ecto be smart enough to create the dependent record first?
I would think this would be a pretty common question, particularly for people coming from ActiveRecord, but for whatever reason, I can’t seem to find the magic Google incantation to find a good answer…