Gaffney was born in Dublin, and grew up in Galway. He went to school in the St Joseph's Patrician College in the city for his Junior Certificate, and moved to the Cistercian College in Roscrea for his fifth and sixth year. Gaffney returned to his home city for his third level education, studying commerce and French at NUI Galway. Gaffney began playing rugby at the age of four, when he joined Galwegians. He was a frequent attendee of Connacht games, serving as a ball boy until the age of 13. Gaffney played rugby in school, playing for the Bish in the Connacht Junior Cup and Cistercian College in the Leinster Senior Cup. In addition to rugby, Gaffney played Gaelic footballgrowing up. He played for Salthill-Knocknacarra and Galway up to minor level.
Club career
Connacht
Gaffney played for Connacht at youth level from under-14 grade up. He was signed to the Connacht academy ahead of the 2014–15 season. He played for the province's second tier side, the Connacht Eagles, in his first two seasons. Gaffney made his debut for the senior team in November 2016, while still part of the academy, when he came on as a replacement in a Pro12 game against Irish rivals Ulster. He made his second appearance in January 2017. At the end of the season however, Gaffney did not sign a senior contract. Instead, on the advice of Connacht academy head Nigel Carolan, he headed to New Zealand.
Zingari-Richmond
After arriving in New Zealand, Gaffney began playing for amateur side Zingari-Richmond in the Dunedin Premier. He was invited to Dunedin by Otagohead coach Cory Brown, a former elite player development officer for Connacht. The move was made with a view to Gaffney potentially playing for the provincial team and during his time in the country he was part of Otago's wider training squad.
Zebre
In August 2017, Gaffney signed for Italian Pro14 side Zebre. The team's head coach Michael Bradley had previously been head coach of Connacht. Gaffney made his debut for the team on 2 September 2017 against the Ospreys. He made his European debut on 13 October 2017 in a Challenge Cup game against Agen. His first try for Zebre came in a Challenge Cup game against Gloucester. In February 2018, Gaffney was injured seriously playing against his former team, Connacht. He suffered a ruptured disk and dislocated his neck and was rushed to hospital where he was kept immobile for three days before surgery could be performed. Gaffney was ultimately forced to retire from rugby as a result of the injury, having played 18 games for Zebre.
International career
Gaffney represented Ireland internationally at under-age level. He made one appearance for the Irish schools team in 2013 on the back of his performances for Cistercian College. Gaffney played for the under-20 team in 2014 and 2015. He did not play in the 2014 Under-20 Six Nations but was named in the squad by Mike Ruddock for the 2014 Junior World Cup. Gaffney made his debut for the under-20 side against France in the pool stages. He started and played the full 80 minutes of all Ireland's games as they finished fourth in the tournament. In the 2015 Under-20 Six Nations, Gaffney made his tournament debut and played in two of the side's five games, as Ireland finished fifth. In April 2015, Nigel Carolan named him in the squad for the upcoming Junior World Cup. Gaffney played in three of the team's five games in the tournament as Ireland finished seventh.