DEV Community

Cover image for Ransack
Fabiano Santos Florentino
Fabiano Santos Florentino

Posted on • Edited on

1

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

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay