Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
User.new.tap{|u| u.name = "Alex" }.save!
u = User.new
u.name = "Alex"
u.save!
Количество строк одна против 3. А также лишняя переменная.User.new do |user|
user.name = 'Alex'
end.save!
def make_admin
User.new.tap do |user|
user.role = 'admin'
end
end
def make_admin
user = User.new
user.role = 'admin'
user
end
Возможность проставлять лямбду при помощи -> появилась сравнительно недавноВ 1.9 она уже есть. Недавно?! xD
a || a = b и не так: a = a || b:irb(main):001:0> b = :caveat
=> :caveat
irb(main):002:0> a1 ||= b
=> :caveat
irb(main):003:0> a2 || a2 = b
NameError: undefined local variable or method `a2' for main:Object
a = b unless a
irb(main):001:0> a = 42
=> 42
irb(main):002:0> a ||= 77
=> 42
irb(main):003:0> a = false
=> false
irb(main):004:0> a ||= true
=> true
irb(main):005:0> a
=> true
a = a || b
def total
@total ||= (1..100000000).to_a.inject(:+)
end
Несколько полезных ruby-трюков, которые (возможно) улучшат ваш код