Blocos
• Closures - Funções anônimas - Lambdas
• Sintaxe concisa (similar a Smalltalk)
• Duas sintaxes
do |a, b|
# código com a, b
end
{|a, b| # código com a, b }
Blocos
do |a, b|
# código com a, b
end
{|a, b| # código com a, b }
Blocos
obj.each do |e|
e.save!
end
(quot;aquot;..quot;zquot;).each do |char|
puts char
end
array.group_by {|a| a.type}
Classe Livro:
Pertence a um Autor
Tem várias Tags
Tem um Upload
O título tem no máximo 300 caracteres
Tem uma máquina de estados
class Book < ActiveRecord::Base
# Relacionamentos
belongs_to :author
has_and_belongs_to_many :tags
has_one :upload
# Validação
validates_length_of :subtitle, :maximum => 300
acts_as_state_machine :initial => :registred
state :passive
state :registred
state :waiting_processing
state :in_processing
state :preview
state :published
state :unpublished
event :register do
transitions :from => :passive, :to => :registred
end
# ...
end