Construire un ActiveRecord Rails où la clause

Quelle est la meilleure façon de construire une clause where à l'aide de Rails de ActiveRecord? Par exemple, disons que j'ai un contrôleur de l'action qui retourne une liste d'articles du blog:

def index
  @posts = Post.all
end

Maintenant, disons que je veux être en mesure de passer en paramètre de l'url, de sorte que cette action de contrôleur retourne uniquement des messages par un auteur en particulier:

def index
  author_id = params[:author_id]

  if author_id.nil?
    @posts = Post.all
  else
    @posts = Post.where("author = ?", author_id)
  end
end

Cela ne me sens pas très à SEC pour moi. Si je devais ajouter de la commande ou de la pagination ou, pire encore, de plus en plus facultatif chaîne de requête URL paramètres de filtrage, ce contrôleur de l'action deviendrait très compliqué.

source d'informationauteur Kevin Pang