I have a small repo for trying out ROM and using multi_insert. I think it could be improved but am wondering how can I do this without a separate query?
def create_with_tasks(user)
users.transaction do
task_attrs = user[:tasks]
user = users.changeset(:create, user).map(:add_timestamps).commit
# It does not set the timestamps
# https://www.rubydoc.info/github/rom-rb/rom-sql/ROM/SQL/Relation
# https://www.rubydoc.info/github/rom-rb/rom-sql/ROM/SQL/Relation#multi_insert-instance_method
new_tasks = tasks.multi_insert(task_attrs.map do |task|
task.merge!(
user_id: user.id,
created_at: Time.now,
updated_at: Time.now
)
end)
end
get_by_id(user.id).combine(:tasks).one
end