Solved it myself!
I had the links parameter set as a string, which DataMapper sets at a default maximum length of 50 characters. All of the links I was trying to add were longer that 50 characters so the save was failing.
Resolved the problem by setting the maximum length of the link parameter to 2000 characters;
class CityLink
include DataMapper::Resource
property :id, Serial
property :city, String
property :link, String, *length: 2000*
end
I took the length of 2000 characters from this page on the DataMapper docs which is for the URI parameter type and links to this SO question.
Once I'd set this, the above .each method worked a trick.