Professional Documents
Culture Documents
Juliana Lucena
Scia e Lder tcnico, Redu Core
10 de Abril de 2014
Antes de tudo
Antes de tudo
A Documentao sua amiga
http://api.rubyonrails.org/
http://guides.rubyonrails.org/
http://rubyonrails.org/
Um pouco mais de
Query Interface
Filtra por atritbuto(s) nd_by
Query Interface
User.find_by(first_name: "Matheus")
SELECT "users".* FROM "users" WHERE "users"."first_name" = 'Matheus' LIMIT 1
# => #<User id: 3, first_name: "Matheus", email: "matheus@example.com",
last_name: nil, age: nil, created_at: "2014-03-20 23:18:15", updated_at:
"2014-03-20 23:18:15">
Seleciona registros em batch (blocos)
nd_each
Informa tamanho do batch
Query Interface
User.find_each do |u|
Newsletter.new(user: user).deliver
end
SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1000
# => true
User.find_each(batch_size: 50) do |u|
Newsletter.new(user: user).deliver
end
SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 50
# => true
Seleciona quais colunas sero
carregadas select
Query Interface
User.select(:age).to_a
SELECT age FROM "users"
# => [#<User id: nil, age: 40>, #<User id: nil, age: nil>, #<User
id: nil, age: nil>, #<User id: nil, age: 20>]
User.select(:age, :id).to_a
SELECT age, id FROM "users"
# => [#<User id: 1, age: 40>, #<User id: 2, age: nil>, #<User id:
3, age: nil>, #<User id: 4, age: 20>]
Carrega apenas os valores das colunas
(no instancia o objeto)
Query Interface
User.pluck(:age)
SELECT "users"."age" FROM "users"
# => [40, nil, nil, 20]
User.pluck(:age, :id)
SELECT "users"."age", "users"."id" FROM "users"
# => [[40, 1], [nil, 2], [nil, 3], [20, 4]]
Carrega associaes para evitar diversas
consultas includes
Query Interface
User.all.each do |u|
puts u.books.map(&:name)
end
User Load (0.3ms) SELECT "users".* FROM "users"
Book Load (0.2ms) SELECT "books".* FROM "books" WHERE "books"."user_id" = ? [
["user_id", 1]]
# => rails
Book Load (0.1ms) SELECT "books".* FROM "books" WHERE "books"."user_id" = ? [
["user_id", 2]]
Book Load (0.1ms) SELECT "books".* FROM "books" WHERE "books"."user_id" = ? [
["user_id", 3]]
Book Load (0.1ms) SELECT "books".* FROM "books" WHERE "books"."user_id" = ? [
["user_id", 4]]
# => dom casmurro
# => 1984
# => [#<User id: 1, first_name: "Alex", email: asg@cin.ufpe.br(...)]
Carrega associaes para evitar diversas
consultas includes
Query Interface
User.includes(:books).each do |u|
puts u.books.map(&:name)
end
User Load (0.4ms) SELECT "users".* FROM "users"
Book Load (0.3ms) SELECT "books".* FROM "books" WHERE "books"."user_id" IN (1,
2, 3, 4)
# => rails
# => dom casmurro
# => 1984
#=> [#<User id: 1, first_name: "Alex", email: asg@cin.ufpe.br", (...)]
Action Pack
Framework para manipular e responder
requisies Web
Proporciona as camadas de View e
Controlador (MVC)
Action Pack
Conveno sobre
Congurao
Conveno sobre
Congurao
StoriesController#new
new.html.erb
/stories/new
Routing
w
Controlador
Como gerar um
Controlador
$ rails g controller Stories new create show
generate
nome do controlador
actions que o controlador ter
class StoriesController < ApplicationController
def new
end
def create
end
def show
end
end
Controlador Simples
class StoriesController < ApplicationController
def show
@story = Story.find(params[:id])
end
end
ApplicationController
Herda de ActionController::Base
D acesso aos params, ltros, redirect_to, etc.
Controlador Simples
Para ser acessada na view, a varivel
precisa ser de instncia (@story)