Controllerı sadeleştirmek

Herkese selamlar. Geliştirdiğim backend uygulamasında herhangi bir controllerın index metodu içinde verileri dönerken page parametresinin gelip gelmediğini kontrol etmem gerekiyor. Eğer geldiyse sayfalandırma yapıyorum gelmediyse bütün kayıtları dönüyorum. İşte bu kontrolü her index metodunu yazmak yerine nasıl bir yol izleyebilirim. Şimdiden teşekkürler :))

    def index
      if params[:page].present?
        paginated = paginate(model_class.all)
        render_collection(paginated)
      else
        render_collection(model_class.all)
      end
    end

Buradaki if kontrolünü nasıl generic hale getirebilirim.

ApplicationController’a şöyle bir private method ekleyebilirsiniz:

def render_collection_x(klass)
      if params[:page].present?
        paginated = paginate(klass.all)
        render_collection(paginated)
      else
        render_collection(klass.all)
      end
    end

Sonra bunu index’ten çağırabilirsiniz:

def index
  render_collection_x(model_class)
end

Ya da ActiveSupport::Concern ile de yapabilirsiniz.

1 Like