This has been a constant source of frustration for me. I can't seem to always get my map scale in meters in QGIS, even if I use a CRS that has map units of meters, e.g. Alberts Equal Area and others. Sometimes it works, but most of the time it doesn't.
I usually work with an area of a few square kilometers. I then have to georeference a satellite image of the area and load my different vector and raster data. Let's specifically look at the georeferencing, I first deselect OTF, then I select my GCP points and set my transformation type. Then I select the CRS, e.g. Hartebeeshoek94/Lo25 (map units = meters) and run the georeferencer. The result is a georeferenced satellite image with the correct coordinates but a scale of 1:1. The scale bar is then also completely incorrect in the map composer. I have now found that every time I save the georeferenced image as a CRS with the units in meters, the scale loads as a 1:1. When I load the layer as a CRS with map units in degrees, the scale is correct by the scale bar is still incorrect in the map composer (as would be expected).