Добавить к params можно например в контроллере с помощью deep_merge!.
Пример:
def card_params
params.require(:card).permit(:original_text, :translated_text, :review_date, :image, :deck_id, deck: [:title]).deep_merge(deck: {user_id: current_user.id})
end
Также можно создать свой метод в модели и использовать ваш вариант с delete:
def self.create_with_deck(params)
deck_params = params.delete(:deck)
if params[:deck_id].blank?
deck = Deck.create(deck_params)
params.deep_merge!(deck_id: deck[:id])
end
create(params)
end