1) Este método devuelve la ruta completa al archivo de la imagen pero ahora estás devolviendo la ruta relative a public/. Yo lo cambiaría para que siga devolviendo la ruta completa. Eg: "#{Rails.root]/public/#{self.icon}"

2) ¿Por qué usas self.select(:icon) en lugar de simplemente self.icon?