Construindo aplicativos Rails com o modelo MongoDB
Avalie esse Início rápido
Após mais de 20 anos, Ruby on Rails ainda é uma framework popular para desenvolvimento web. Sua arquitetura MVC (Model-View-Controller) oferece uma maneira fácil de criar um aplicativo web limpo, bem estruturado e escalável.
O Rails está integrado a um banco de dados relacional tradicional, mas isso pode ser facilmente alterado para usar o MongoDB. As instruções estão em nosso guia de introdução. No entanto, se você quiser simplesmente criar um aplicativo totalmente funcional, poderá usar o modelo MongoDB Rails, conforme explicado neste tutorial.
Para este tutorial, você precisará de:
Este modelo usa o Mongoid, o driver mantido do MongoDB, para se conectar e fazer a interface com o banco de dados. Para criar o estilo, mantivemos as coisas simples e utilizamos
tailwindcss-rails
. Todo o resto deve ser igual a um projeto Virginia Rails.Comece criando um novo projeto Rails. Você deve usar o sinalizador
--skip-active-record
para que ele não instale essas gems. Estes serão substituídos pela joiamongoid
.1 rails new rails-mongodb -m https://raw.githubusercontent.com/mongodb-developer/rails-mongodb/main/template.rb --skip-active-record
Quando solicitado, insira a connection string para seu Cluster MongoDB. A UI do Atlas fornece a connection string.
Agora você tem tudo de que precisa para iniciar seu servidor da web.
1 cd rails-mongodb 2 rails s
Agora, você deve conseguir apontar seu navegador para http://localhost:3000 e ver o aplicativo em execução. Calma! Você tem um aplicativo Rails que se conecta ao banco de MongoDB database. A partir desta interface do usuário, você pode ver a lista de filmes do banco de dados
sample_mflix
. Clicar em um título levará você à página de detalhes para ver a trama do filme. Você também pode clicar no ícone da lixeira ao lado dos filmes para excluí-los.Você também tem uma barra Atlas Search na parte inferior, que permite pesquisar filmes por título. Você até tem um formulário para adicionar novos filmes.
Você tem um aplicativo básico, mas e agora? É provável que você tenha um conjunto de dados diferente e queira se conectar a ele. Aqui, descrevemos os vários componentes deste aplicativo e como você pode editá-los para seus dados.
O Mongoid gerencia a conexão do banco de dados. A string de conexão está no arquivo config/mongoid.yml. Você pode alterá-lo aqui para se conectar a um cluster diferente. O driver gerenciará as conexões do banco de dados, então você não precisa fazer mais aqui.
Para criar nosso modelo de filme, usamos o andaime Rails padrão. Para os fins deste aplicativo, nossos filmes têm apenas três campos:
title
, plot
e year
.1 bin/rails g scaffold Movie title:string plot:text year:integer
Você reconhecerá os arquivos padrão listados nas pastas
app/models
, app/controllers
e app/views
para os componentes MVC do aplicativo.O modelo para os filmes pode ser encontrado no arquivo
app/models/movie.rb
.1 class Movie 2 include Mongoid::Document 3 store_in database: 'sample_mflix' 4 5 include Mongoid::Timestamps 6 field :title, type: String 7 field :plot, type: String 8 field :year, type: Integer 9 end
Como você pode ver, nossos três campos e os registros de data/hora estão listados aqui. Isso gerenciará automaticamente os
updated_at
created_at
campos e em seu documento.Neste caso, adicionamos a linha
store_in database: 'sample-mflix'
. Normalmente, isso seria tratado em sua connection string armazenada no arquivoconfig/mongoid.yml
. É aqui apenas para o objetivo tutorial do artigo.Em seguida, o código do nosso controlador de filme pode ser encontrado no arquivo
app/controllers/movies_controller.rb
. O Mongoid gerou a maior parte do código neste controlador, que também contém o código para recuperar alguns dos filmes do banco de dados.1 # GET /movies or /movies.json 2 def index 3 @movies = Movie.limit(10) 4 5 # Return movies if a form was posted with a search term 6 if params[:search] 7 @searched_movies = Movie.where(title: /#{params[:search]}/i) 8 end 9 end
Fazemos duas coisas aqui.
Primeiro, buscamos 10 filmes do banco de dados com
Movie.limit(10)
. Não temos nenhum filtro de query específico para este, mas não queremos carregar todos os filmes do nosso banco de dados em nossa visualização.Em segundo lugar, procuramos um parâmetro de query chamado
search
. Se estiver presente, realizamos uma query um pouco mais complexa para recuperar os filmes que correspondam a esse filtro. Neste caso, usamos o filtro (title: /#{params[:search]}/i)
. Isso usará uma expressão regular para encontrar títulos de filmes que correspondam à query.Usar um regex para consultar texto não é ideal, pois ele não pode usar os índices. Embora isso funcione para esse aplicativo de demonstração, você deve tentar usar o Atlas Search para seu aplicativo de produção.
Nada mais foi alterado neste arquivo, para que você possa ver como o código gerado pode fornecer todas as funcionalidades básicas. Deixamos a função
update
no arquivo, mesmo que o aplicativo não a use, para que você veja como seria o código de atualização.Finalmente, você tem suas visualizações. Você pode encontrá-los na pasta
app/views/movies
. Há uma visualização para cada uma das páginas do nosso aplicativo e uma visualização parcial para listar os filmes.O HTML nas visualizações foi ligeiramente alterado em relação ao código padrão do Rails para torná-lo mais esteticamente desejável ao observar o aplicativo, mas a maior parte do código manteve-se inalterada. Usamos o código original em
app/views/movies/index.html.erb
para exibir os filmes na página principal.1 <% @movies.each do |movie| %> 2 <%= render movie %> 3 <% end %>
Isso gerará cada filme na lista usando o modelo parcial
app/views/movies/_movie.html.erb
.O modelo parcial também foi mantido no mínimo.
1 <div id="<%= dom_id movie %>"> 2 <%= link_to "🗑️", movie_path(movie), data: { turbo_method: :delete } %> 3 <%= link_to " #{movie.title} (#{movie.year})", movie_path(movie) %> 4 </div>
Você pode ver aqui que listamos o título e o ano do filme, e o link para a página de detalhes do filme. O ícone da lixeira usa o link
{ turbo_method: :delete }
para excluir o filme da coleção imediatamente.Como seria de se esperar de um aplicativo Rails, dependemos principalmente das convenções de codificação para compartilhar os dados dos drivers com as visualizações, para que os filmes possam ser exibidos.
É isso ai! Você tem o básico para se conectar ao seu database e executar as operações CRUD (create, read, update, delete) em suas collections. Isso é tudo que você precisa para construir sua aplicação no Rails. Se quiser saber mais, você pode usar o link fornecido na barra de navegação do aplicativo.
Agora, tente adicionar mais páginas ao seu aplicativo. Adicionar uma coleção para os atores seria um ótimo lugar para começar. E se você estiver se sentido destemido, pode adicionar uma seção para adicionar comentários associados a filmes. Você pode encontrar um exemplo disso no guiade introdução. Se precisar de ajuda, entre em contato conosco nos fóruns da comunidadee teremos o maior Prazer em ajudar.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.