use first_or_create to avoid ingredient duplication