Ibn Al-Jawzi reports that Ibn Abbaas, Mujaahid and others have said that
was abrogated by
This is what he writes,
ذكر الآية السادسة: قوله تعالى "ما كان لنبي أن يكون له أسرى حتى يثخن في الأرض". روي عن ابن عباس ومجاهد في آخرين أن هذه الآية منسوخة بقوله "فإما منا بعد وإما فداء". وليس للنسخ وجه لأن غزاة بدر كانت وفي المسلمين قلة فلما كثروا واشتد سلطانهم نزلت الآية الأخرى، ويبين هذا قوله "حتى يثخن في الأرض". قال أبو جعفر النحاس ليس ها هنا ناسخ ولا منسوخ لأنه قال عز وجل "ما كان لنبي أن يكون له أسرى حتى يثخن في الأرض" فلما أثخن في الأرض كان له أسرى
He refutes the abrogation claim and his argument is that 8:67 was at a time when Muslims were a few while 47:4 was when they were stronger. He says that An-Nahhaas sees no abrogation either because when the Prophet did fight a big fight, he did have prisoners of war.
Al-Qaasim ibn Salaam, in his book الناسخ والمنسوخ في القرآن والسنة, pages 166-169, discusses this claim and disagrees with it. His argument is that the practice of the prophet (PBUH) in battles was all three options: Killing, ransoming and pardoning of prisoners of war. He only killed those who broke their pledges. And following in his footsteps was Abu-Bakr As-Siddeeq, may God have been pleased with him, and the caliphs after him. Ibn Salaam concludes that all options are available to the leader as he sees the national interest.
Ibn Salaam then mentions a forth option: enslaving, but does not quote narrations to support it.