if @user.name and !@user.name.empty?
puts @user.name
else
puts "no name"
end
blank?
Slide 46
Slide 46 text
if @user.name.blank?
puts "no name"
else
puts @user.name
end
blank?
Slide 47
Slide 47 text
if @user.name.present?
puts @user.name
else
puts "no name"
end
present?
Slide 48
Slide 48 text
puts @user.name.presence || "no name"
presence
Slide 49
Slide 49 text
truncate
opening = "A long time ago in a galaxy far, far away"
if opening.size > 20
opening[0..16] + "..."
end
# => "A long time ago i..."
Slide 50
Slide 50 text
truncate
opening = "A long time ago in a galaxy far, far away"
opening.truncate(20)
# => "A long time ago i..."
!
Slide 51
Slide 51 text
truncate
opening = "A long time ago in a galaxy far, far away"
opening.truncate(20, :separator => ' ')
# => "A long time ago..."
!
Slide 52
Slide 52 text
@existing = User.find_by_email(@new.email)
@existing.destroy if @existing
try
Slide 53
Slide 53 text
User.find_by_email(@new.email).try(:destroy)
try
Slide 54
Slide 54 text
in?
if admin_roles.include? @user.role
puts "Hi Admin!"
end
Slide 55
Slide 55 text
in?
if @user.role.in? admin_roles
puts "Hi Admin!"
end
Slide 56
Slide 56 text
class User
!
has_one :account
!
def balance
self.account.balance
end
!
def balance=(amount)
self.account.balance=(amount)
end
!
end
Delegation
Slide 57
Slide 57 text
class User
!
has_one :account
!
delegate :balance, :balance=, :to => :account
!
end
Delegation
Slide 58
Slide 58 text
class Avatar
!
def file_size
if @file_size
return @file_size
else
result = some_expensive_calculation
result += more_expensive_calculation
@file_size = result
end
end
!
end
Memoization
Slide 59
Slide 59 text
class Avatar
!
extend ActiveSupport::Memoizable
!
def file_size
result = some_expensive_calculation
result += more_expensive_calculation
end
memoize :file_size
!
end
Memoization
Slide 60
Slide 60 text
!
alias_method :translate_without_log, :translate
!
def translate_with_log(*args)
result = translate_without_log(*args)
Rails.logger.info result
result
end
!
alias_method :translate, :translate_with_log
alias_method_chain
Slide 61
Slide 61 text
def translate_with_log(*args)
result = translate_without_log(*args)
Rails.logger.info result
result
end
!
alias_method_chain :translate, :log
alias_method_chain
Slide 62
Slide 62 text
class Resource
class < self
!
def host=(name)
@host = hame
end
def host
@host
end
!
end
end
class_attribute
Slide 63
Slide 63 text
class Resource
class < self
!
attr_accessor :host
!
end
end
class_attribute
Slide 64
Slide 64 text
class Resource
!
class_attribute :host
!
end
class_attribute