DEV Community

Cover image for Ransack
Fabiano Santos Florentino
Fabiano Santos Florentino

Posted on • Edited on

Ransack

Ransack uma Query Language em Rails

No contexto do desenvolvimento web com Rails, o Ransack oferece uma maneira conveniente e flexível de construir consultas dinâmicas em bancos de dados. Funcionando como uma "linguagem de consulta" embutida, o Ransack simplifica a tarefa de filtrar, ordenar e pesquisar registros em modelos ActiveRecord

Filtrando Registros

Uma das funcionalidades principais do Ransack é permitir que os desenvolvedores filtrem registros com base em critérios específicos. Isso pode ser útil em cenários como uma página de administração onde o usuário deseja ver apenas os registros que correspondem a determinados critérios.

# No controlador
def index
  @q = Post.ransack(params[:q])
  @posts = @q.result
end
Enter fullscreen mode Exit fullscreen mode

Neste exemplo, Post.ransack(params[:q]) cria um objeto Ransack com base nos parâmetros recebidos da solicitação HTTP. Os parâmetros geralmente vêm de um formulário na interface do usuário, onde o usuário pode especificar os critérios de filtro desejados.

Ordenando Registros

Outra característica útil do Ransack é a capacidade de ordenar os registros recuperados. Isso é feito adicionando os parâmetros de ordenação adequados à solicitação HTTP.

# No controlador
def index
  @q = Post.ransack(params[:q])
  @posts = @q.result.order(created_at: :desc)
end
Enter fullscreen mode Exit fullscreen mode

Aqui, @q.result.order(created_at: :desc) garante que os registros sejam ordenados por created_at em ordem decrescente. Isso pode ser personalizado conforme a necessidade da aplicação.

Pesquisando Registros

Além de filtrar e ordenar, o Ransack também facilita a realização de pesquisas de texto completo em registros. Isso pode ser especialmente útil em interfaces de pesquisa onde os usuários podem buscar registros com base em palavras-chave. Para deixar a pesquisa mais especifica, você pode utilizar as colunas do banco de dados combinado a uma lista de predicados do ransack para filtrar os resultados.

/route?q[title_cont]=title
Enter fullscreen mode Exit fullscreen mode
/route?q[title_cont]=tittle&q[author_eq]=author
Enter fullscreen mode Exit fullscreen mode

No primeiro exemplo, o Ransack recebe como parametro os filtro title_cont, com o valor title. title_cont é a combinação do nome da colune title com o predicado *_cont, o controlador recebe esse parametro como params[:q] e realiza a busca com o valor title.

No segundo exemplo, o Ransack recebe como parametro os filtros title_cont e author_eq, com os valores title e author, respectivamente. Da mesma forma como no primeiro exemplo o controlador recebe esses parametros para realizar a busca com os valores title e author.

Conclusão

O Ransack é uma ferramenta poderosa que simplifica a construção de consultas dinâmicas em aplicativos Rails. Com sua sintaxe amigável e recursos abrangentes, ele permite que os desenvolvedores criem interfaces de usuário poderosas e flexíveis para interagir com bancos de dados. Ao usar o Ransack como sua Query Language em Rails, você pode construir aplicativos mais eficientes e fáceis de usar para seus usuários.

Sabia Mais

Top comments (0)