O Active Record possui algumas funcionalidades que visam facilitar a validação de campos e economizar tempo do desenvolvedor na criação da interface com o usuário. O Rails utiliza validações de nível de modelo, está é a melhor maneira de garantir que apenas dados válidos serão salvos em seu banco de dados, pois dados essenciais não podem ser ignorados pelos usuários finais. Rails torna as validações fáceis de usar, fornecendo uma base para ajudar nas necessidades comuns, e também permite que você crie seus próprios métodos de validação.
Validate: http://guides.rubyonrails.org/active_record_validations.html
Validando Campos Obrigatórios
Neste walkthrough utilizamos somente os campos de presença, mas você pode executar outros tipos de validações, você pode ver algumas delas clicando aqui.
1 – Crie um projeto do tipo Rails para o banco de dados MySQL e configure seu projeto corretamente para que seja exibida uma visão da pagina índice de sua aplicação. Tenha certeza que você configurou tudo, use as instruções abaixo para criar o controlador e o modelo:
rails g controller meucontrole index rails g model modelo01 nome:string sobrenome:string cargo:string salario:float rake db:migrate rails server
2 – Se estiver utilizando a IDE Aptana Studio, você criará por padrão um projeto para o banco de dados SQLite3, você precisa mudar manualmente o arquivo de conexão (figura acima) e adicionar o GEM chamado mysql2, use a figura abaixo para referencia:
3 – Após configurar o arquivo de rotas, utilize os códigos abaixo para preencher seu respectivos arquivos do modelo, visão e controlador. Rode sua aplicação e a chame no navegador e você pode ver que os campos são de preenchimento obrigatórios:
4 – Uma vez que todos os campos satisfazerem a condição de presença do modelo, o registro será inserido com sucesso no banco de dados:
Exemplo:
Neste exemplo criamos um projeto Rails e utilizamos o controlador para exibir um formulário de campos obrigatórios.
Ruby on Rails
Modelo – modelo01.rb
class Modelo01 < ActiveRecord::Base # Cria validação validates :nome, :sobrenome, :cargo, :salario, :presence => true end
View – index.html.erb
<h1>Desenvolvimento Aberto</h1> <h2>Ruby on Rails - Validate </h2> <%= form_for @modelo, :url => {:action => :create} do |cad|%> <% if @modelo.errors.any? %> <h3>Erros: </h3> <ul style="color:red"> <% @modelo.errors.full_messages.each do |menssagem| %> <li> <%= menssagem %> </li> <% end %> </ul> <% end %> <p> <%= cad.label :nome%> <br /> <%= cad.text_field :nome%> </p> <p> <%= cad.label :sobrenome%> <br /> <%= cad.text_field :sobrenome, :size => "35x10"%> </p> <p> <%= cad.label :cargo%> <br /> <%= cad.text_field :cargo, :size => "30x10"%> </p> <p> <%= cad.label :salario%> <br /> <%= cad.text_field :salario, :size => "15x10"%> </p> <p> <%= cad.submit "Adicionar dados" %></p> <% end %>
Controller- meucontrole_controller.rb
class MeucontroleController < ApplicationController # Controladores def index @modelo = Modelo01.new end def new @modelo = Modelo01.new end # Cria registro def create @modelo = Modelo01.new(modelo_params) if @modelo.save # Você pode colocar uma menssagem aqui. render "index" else render "index" end end # Define parametros requeridos private def modelo_params params.require(:modelo01).permit(:nome, :sobrenome, :cargo, :salario) end end
Routes- routes.rb
Rails.application.routes.draw do get 'meucontrole/index' # Define rota do controle resources :meucontrole end