Escolar Documentos
Profissional Documentos
Cultura Documentos
Guilherme Cavalcanti
Redu
27 de Maro de 2014
Roteiro
ActiveRecord
Callbacks
Query Interface
Scopes
Mos obra
Antes de tudo
Antes de tudo
A Documentao sua amiga
http://api.rubyonrails.org/
http://guides.rubyonrails.org/
http://rubyonrails.org/
Callbacks
Callbacks
Associam comportamento ao ciclo de
vida de um modelo
Por exemplo, executar alguma ao
quando um objeto ActiveRecord :
validado, criado, deletado,
atualizado, salvo
Exemplos de uso
Callbacks disponveis
Ciclo de criao de um objeto
before_validation!
after_validation!
before_save!
around_save!
before_create!
around_create!
after_create!
after_save!
Callbacks disponveis
Ciclo de deleo de um objeto
before_destroy!
around_destroy!
after_destroy!
Query Interface
Query Interface
Interface que define acesso ao banco e
instancia os objetos
ActiveRecord facilita a interao entre o
objeto e banco de dados
Retornando um simples
objeto
Usando a primary key (find)
#
Encontra
um
client
com
id
=
10
client
=
Client.find(10)
#
=>
#<Client
id:
10,
first_name:
"Ryan">
client
=
Client.first
#
=>
#<Client
id:
1,
first_name:
"Lifo">
Retornando muitos
objetos
Usando as primary keys (find)
client
=
Client.find([1,
10])
#
Or
even
Client.find(1,
10)
#
=>
[#<Client
id:
1,
first_name:
"Lifo">,
#<Client
id:
10,
first_name:
"Ryan">]
Condies
String pura
client
=
Client.where("orders_count
=
'2'")
#
=>
[#<Client
id:
1,
first_name:
"Lifo",
orders_count:
2>,
#<Client
id:
10,
first_name:
"Ryan",
orders_count:
2>]
Client.where(created_at:
(params[:start_date].to_date)..
(params[:end_date].to_date))
Ordem e Seleo
Ordem
Client.order("created_at
DESC")
#
ou
Client.order("created_at
ASC")
Seleo de coluna
Client.select("viewable_by,
locked")
Limite e Oset
Limite e Oset
Client.limit(5).offset(30)
Scopes
Scopes
So mtodos
Especificam consultas comumente
utilizadas
Pode-se utiliz-los nos modelos e
associaes
Scopes
Scopes
Tambm pode ser escrito assim:
class User < ActiveRecord::Base!
scope :seniors, -> { where('age > 65') }!
end!
E qual a vantagem?
Scopes
E qual a vantagem?
class User < ActiveRecord::Base!
scope :born_today, -> { where(birthday: Date.today) }!
end!
Passando parmetros
Encadeamento
Referncias
Mos a obra
Obrigado. :)