際際滷

際際滷Share a Scribd company logo
亠仗仂从仂亶仆亶 从仂亟
    @SergeyMoiseev
 亠弍亠


 亠于亠仍仂仗亠  1998 亞仂亟舒.
 亳舒仍 亳仆亟亳舒仍仆亠 亳亠仄 仆舒 PHP.
 丐亠仗亠 仆舒 RoR.
舒从 仂仗亠亟亠仍亳
        仆亠仂亳舒?

 丐仂仍亠 从仂仆仂仍仍亠
 亠仗仂从仂亶于仂
 亠仍舒仆亳亠 舒弍仂舒  仗亠亟亠仍仆仄亳
  仍仂于亳礆亳
弌舒仄亶 仗仂仂亶
   仗仂仂弍?
  def   foobar
    x   = self.bar
    x   = nil if x == 0
    y   = foo

    return x || y
  end
Return

 弌舒仄亶 仆亠仂亠于亳亟仆亶 仂仗亠舒仂 亟仍
  仆仂于亳从仂于
 个仆从亳 亠亞仂 仆舒亳弍仂仍亠亠 仂仍亳舒亠 仂
  舒从仂于仂亶 于 亟亞亳 磶从舒
return 亟仍 鍖ow-control
    def foobar
      if foo?
        if bar?
           #do something
           return 42
        else
           #do something
        end
      else
        #do something
      end
    end
if || unless
           if !params[:query].blank?




if !something                  unless something
unless?

 舒从 仆亳 舒仆仆仂, 仂 亠亟亳仆于亠仆仆仂亠 亟仍
  亠亞仂 仂仆 仆亢亠仆.
 丼亳舒 仍仂亞亳从 仂弍亠亟亳仆亠仆仆 and/or 仗亳
  仂仄 仗亳仄亠仆 从 仆亠亶 ! 仍仂亢仆仂.
 丕 仆亠亞仂 仆亠 elsunless (仆亠仍亰 从舒亰舒, 仂
  仂 仄亳仆).
If/else vs. unless
def possible_parents
  if self.new_record?
    Category.first_level
  else
    Category.first_level.where('id != ?', self.id)
  end
end

                                 vs.

   scope :not_given, lambda{|id| where('id != ?', id)}

   def possible_parents
     Category.first_level
     Category.first_level.not_given(self.id) unless self.new_record?
   end
亳亟 弍亠仗仂从仂亶于舒

 仂磶仆 仗仂仍亰仂于舒亠仍 (亞仍仗仂亞仂 亳仍亳
  亰仍仂仆舒仄亠礌仆仂亞仂).
 仂磶仆 仗亠亟亠仍仆 仍仂于亳亶.
 仂磶仆 磶从舒. 亠亟仂舒仂从 于亠仄亠仆亳 亟仍
  从仗亠亳仄亠仆仂于.
 仍仍ミ経狐 从仂仆仂仍.
仂磶仆 仗仂仍亰仂于舒亠仍
          仂亟 亳亰 从仂仆仂仍仍亠舒 于 舒亟仄亳仆从亠
@role = Role.find params[:id]
redirect_to role_index_path and return unless @role


  仂亞舒仄仄亳 弍仂亳 仆亠仗舒于亳仍仆仂亞仂 仗舒舒仄亠舒.
 亳 仂仄 仂仆 亰舒弍于舒亠 仂 仂仄, 仂 鍖nd 于弍舒于舒亠
                   exception.
仂磶仆 仗亠亟亠仍仆
             仍仂于亳亶
session[:foo] = params[:foo].blank? ? nil :
params[:foo].to_i


                         VS.

session[:foo] = params[:foo] ? params[:foo] : nil
仂磶仆 磶从舒
scope :with_state, lambda {|state| where('state = ?',
state.to_s)}
scope :ready_for_start, with_state(:foo)
scope :ready_for_close, where('state IN(?)',
[:foo, :bar])


      于亟亞 仂仆 仆亠 仗亳于亠亟亠 亳仄于仂仍 从 仂从亠?

scope :with_states, lambda {|s| where("state in
(#{s.map{|e| "'#{e.to_s}'"}.join(',')})")}
仍仍ミ経狐 从仂仆仂仍
def self.find_for_facebook_oauth(access_token,
signed_in_resource=nil)
  data = access_token['extra']['user_hash']
  if user = User.find_by_email(data["email"])
    user
  else # Create a user with a stub password.
    user = User.create do |record|
      record.email = data['email']
      record.password = Devise.friendly_token[0,20]
      record.registration_source = 1
      record.skip_confirmation!
    end
  end
end
仍亠仗仍亠仆亳亠
          弍亠仗仂从仂亶于仂仄

def self.to_rtf(codes)
  buffer = ""
  codes.each {|code| buffer << code.value << "n"}
  buffer
end
仍亠仗仍亠仆亳亠
            弍亠仗仂从仂亶于仂仄 2
def self.to_rtf(codes)
  codes.inject("") {|code, buffer| buffer << code.value << "n"}
end



                    亅仂 弍仍 亠舒从仂亳仆亞
仍亠仗仍亠仆亳亠
   弍亠仗仂从仂亶于仂仄 3
   def self.to_rtf(codes)
     codes.map(&:value).join("n")
   end

 仂 仂, 仂 仆舒 舒仄仂仄 亟亠仍亠 弍仍仂 仆亢仆仂.
仆舒亶 于仂亳
              亳仆仄亠仆
before_filter :guests_only!

def guests_only!
  redirect_to root_url and return if user_signed_in?
end

                 舒亠仄  return?
舒亰亞舒亟从舒
 仂亞舒仄仄亳 仆亠 亰仆舒亠, 从舒从 舒弍仂舒亠
  before_鍖lter.
 仆 弍亠仗仂从仂亳, 仂 从仂亟 从仂仆仂仍仍亠舒
  弍亟亠 于仗仂仍仆 仗仂仍亠 亠亟亳亠从舒 于
  亳仍亠.
  于仂亠亞仂 弍亠仗仂从仂亶于舒 仂仆 亰舒弍于舒亠 从舒从
  仂 仂仄, 仂 仆亢仆仂 于仂亰于舒舒 false, 舒从 亳 仂
  仂仄, 仂 仗仂仍亠 亠亟亳亠从舒 仂 亢亠 仍亳仆亠亠.
仂仍亠亠 仗仂仂亠
       仂弍仆亠仆亳亠

 仂亟 弍仍 仗亠亠仆亠亠仆 于 亳仍 亳亰 从亠仆舒.
 仂亞舒仄仄亳 仗仂仂 仆亠 仂亠 亠亞仂
  仗亠亠仗亳于舒, 仗仂仂仄 从舒从 从舒亢亠, 仂
  仂 于仂亰于舒 仆亢亠仆 (于仂亰于舒舒亠仄 从
  亳仂亟仆仂仄 仂弍仆亠仆亳).
Metaprogramming to
          the recsue
if permission.can?
  can permission.action.to_sym, subject
else
  cannot permission.action.to_sym, subject
end


                    vs.
     method = permission.can? ? :can : :cannot
     send method, permission.action.to_sym, subject
弌仗仂仂弍 弍仂弍


 仆舒仆亳亠 磶从舒
 亳亳亠从亳亶 于亰亞仍磲 仆舒 于仂亶 从仂亟
 Let it fail (hoptoad 于 仗仂仄仂)

More Related Content

Similar to Worried code (20)

About Python
About PythonAbout Python
About Python
Yury Yurevich
Enter: legacy code
Enter: legacy codeEnter: legacy code
Enter: legacy code
Kamil Samigullin
仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶.
仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶. 仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶.
仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶.
Levon Avakyan
Alexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the BeastAlexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
Dev2Dev
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
0xffAA
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
Igor Khrol
Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于
Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于
Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于
CodeFest
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
ScalaNsk
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
ssuser0562f1
仍亞仂亳仄亳亰舒亳 亳 仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++
仍亞仂亳仄亳亰舒亳 亳  仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++仍亞仂亳仄亳亰舒亳 亳  仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++
仍亞仂亳仄亳亰舒亳 亳 仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++
ssuser0562f1
亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool
亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool
亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool
Andrey Tokarchuk
functional patterns - dotnetconf'11
functional patterns - dotnetconf'11functional patterns - dotnetconf'11
functional patterns - dotnetconf'11
0xffAA
仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒
仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒
仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒
Sergey Platonov
亠从亳 1. 舒舒仍仂.
亠从亳 1. 舒舒仍仂.亠从亳 1. 舒舒仍仂.
亠从亳 1. 舒舒仍仂.
Roman Brovko
50 仂亠仆从仂于 从舒仆仂亞仂
50 仂亠仆从仂于 从舒仆仂亞仂50 仂亠仆从仂于 从舒仆仂亞仂
50 仂亠仆从仂于 从舒仆仂亞仂
弌亠亞亠亶 仍亠从舒仆亟仂于亳
2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂
2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂
2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂
仄从亳亠 丐-弍弍仂仆亳从亳
亠从亳 6. 仍舒 1.
亠从亳 6. 仍舒 1.亠从亳 6. 仍舒 1.
亠从亳 6. 仍舒 1.
Roman Brovko
亰舒仗舒亳 从仂亟舒
亰舒仗舒亳 从仂亟舒亰舒仗舒亳 从仂亟舒
亰舒仗舒亳 从仂亟舒
Vitaly Ruzhnikov
仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶.
仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶. 仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶.
仂亞舒仄仄亳仂于舒仆亳亠 从舒从 仗仂仂弍 于舒亢亠仆亳 仄仍亠亶.
Levon Avakyan
Alexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the BeastAlexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-从仍弍 亳从仂仍舒亠于舒 - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
Dev2Dev
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
0xffAA
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
Igor Khrol
Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于
Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于
Grail: 舒亞亳 亟仍 于舒亳 Python-亠仂于
CodeFest
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
ScalaNsk
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
ssuser0562f1
仍亞仂亳仄亳亰舒亳 亳 仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++
仍亞仂亳仄亳亰舒亳 亳  仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++仍亞仂亳仄亳亰舒亳 亳  仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++
仍亞仂亳仄亳亰舒亳 亳 仗仂亞舒仄仄亳仂于舒仆亳亠 弌/弌++
ssuser0562f1
亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool
亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool
亠仄仂仆亳亰亳仂于舒仆仆亶 PHP - before it was cool
Andrey Tokarchuk
functional patterns - dotnetconf'11
functional patterns - dotnetconf'11functional patterns - dotnetconf'11
functional patterns - dotnetconf'11
0xffAA
仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒
仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒
仆亟亠亶 舒仗仂于, 亳于舒仆亠 弍舒亶从亳 仂 舒亰舒弍仂亳从仂于 舒仆舒仍亳亰舒仂舒 从仂亟舒
Sergey Platonov
亠从亳 1. 舒舒仍仂.
亠从亳 1. 舒舒仍仂.亠从亳 1. 舒舒仍仂.
亠从亳 1. 舒舒仍仂.
Roman Brovko
2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂
2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂
2015-03-07 03 弌亠亞亠亳 仍亠从舒仆亟仂于亳. 50 仂亠仆从仂于 从舒仆仂亞仂
仄从亳亠 丐-弍弍仂仆亳从亳
亠从亳 6. 仍舒 1.
亠从亳 6. 仍舒 1.亠从亳 6. 仍舒 1.
亠从亳 6. 仍舒 1.
Roman Brovko
亰舒仗舒亳 从仂亟舒
亰舒仗舒亳 从仂亟舒亰舒仗舒亳 从仂亟舒
亰舒仗舒亳 从仂亟舒
Vitaly Ruzhnikov

Worried code

  • 2. 亠弍亠 亠于亠仍仂仗亠 1998 亞仂亟舒. 亳舒仍 亳仆亟亳舒仍仆亠 亳亠仄 仆舒 PHP. 丐亠仗亠 仆舒 RoR.
  • 3. 舒从 仂仗亠亟亠仍亳 仆亠仂亳舒? 丐仂仍亠 从仂仆仂仍仍亠 亠仗仂从仂亶于仂 亠仍舒仆亳亠 舒弍仂舒 仗亠亟亠仍仆仄亳 仍仂于亳礆亳
  • 4. 弌舒仄亶 仗仂仂亶 仗仂仂弍? def foobar x = self.bar x = nil if x == 0 y = foo return x || y end
  • 5. Return 弌舒仄亶 仆亠仂亠于亳亟仆亶 仂仗亠舒仂 亟仍 仆仂于亳从仂于 个仆从亳 亠亞仂 仆舒亳弍仂仍亠亠 仂仍亳舒亠 仂 舒从仂于仂亶 于 亟亞亳 磶从舒
  • 6. return 亟仍 鍖ow-control def foobar if foo? if bar? #do something return 42 else #do something end else #do something end end
  • 7. if || unless if !params[:query].blank? if !something unless something
  • 8. unless? 舒从 仆亳 舒仆仆仂, 仂 亠亟亳仆于亠仆仆仂亠 亟仍 亠亞仂 仂仆 仆亢亠仆. 丼亳舒 仍仂亞亳从 仂弍亠亟亳仆亠仆仆 and/or 仗亳 仂仄 仗亳仄亠仆 从 仆亠亶 ! 仍仂亢仆仂. 丕 仆亠亞仂 仆亠 elsunless (仆亠仍亰 从舒亰舒, 仂 仂 仄亳仆).
  • 9. If/else vs. unless def possible_parents if self.new_record? Category.first_level else Category.first_level.where('id != ?', self.id) end end vs. scope :not_given, lambda{|id| where('id != ?', id)} def possible_parents Category.first_level Category.first_level.not_given(self.id) unless self.new_record? end
  • 10. 亳亟 弍亠仗仂从仂亶于舒 仂磶仆 仗仂仍亰仂于舒亠仍 (亞仍仗仂亞仂 亳仍亳 亰仍仂仆舒仄亠礌仆仂亞仂). 仂磶仆 仗亠亟亠仍仆 仍仂于亳亶. 仂磶仆 磶从舒. 亠亟仂舒仂从 于亠仄亠仆亳 亟仍 从仗亠亳仄亠仆仂于. 仍仍ミ経狐 从仂仆仂仍.
  • 11. 仂磶仆 仗仂仍亰仂于舒亠仍 仂亟 亳亰 从仂仆仂仍仍亠舒 于 舒亟仄亳仆从亠 @role = Role.find params[:id] redirect_to role_index_path and return unless @role 仂亞舒仄仄亳 弍仂亳 仆亠仗舒于亳仍仆仂亞仂 仗舒舒仄亠舒. 亳 仂仄 仂仆 亰舒弍于舒亠 仂 仂仄, 仂 鍖nd 于弍舒于舒亠 exception.
  • 12. 仂磶仆 仗亠亟亠仍仆 仍仂于亳亶 session[:foo] = params[:foo].blank? ? nil : params[:foo].to_i VS. session[:foo] = params[:foo] ? params[:foo] : nil
  • 13. 仂磶仆 磶从舒 scope :with_state, lambda {|state| where('state = ?', state.to_s)} scope :ready_for_start, with_state(:foo) scope :ready_for_close, where('state IN(?)', [:foo, :bar]) 于亟亞 仂仆 仆亠 仗亳于亠亟亠 亳仄于仂仍 从 仂从亠? scope :with_states, lambda {|s| where("state in (#{s.map{|e| "'#{e.to_s}'"}.join(',')})")}
  • 14. 仍仍ミ経狐 从仂仆仂仍 def self.find_for_facebook_oauth(access_token, signed_in_resource=nil) data = access_token['extra']['user_hash'] if user = User.find_by_email(data["email"]) user else # Create a user with a stub password. user = User.create do |record| record.email = data['email'] record.password = Devise.friendly_token[0,20] record.registration_source = 1 record.skip_confirmation! end end end
  • 15. 仍亠仗仍亠仆亳亠 弍亠仗仂从仂亶于仂仄 def self.to_rtf(codes) buffer = "" codes.each {|code| buffer << code.value << "n"} buffer end
  • 16. 仍亠仗仍亠仆亳亠 弍亠仗仂从仂亶于仂仄 2 def self.to_rtf(codes) codes.inject("") {|code, buffer| buffer << code.value << "n"} end 亅仂 弍仍 亠舒从仂亳仆亞
  • 17. 仍亠仗仍亠仆亳亠 弍亠仗仂从仂亶于仂仄 3 def self.to_rtf(codes) codes.map(&:value).join("n") end 仂 仂, 仂 仆舒 舒仄仂仄 亟亠仍亠 弍仍仂 仆亢仆仂.
  • 18. 仆舒亶 于仂亳 亳仆仄亠仆 before_filter :guests_only! def guests_only! redirect_to root_url and return if user_signed_in? end 舒亠仄 return?
  • 19. 舒亰亞舒亟从舒 仂亞舒仄仄亳 仆亠 亰仆舒亠, 从舒从 舒弍仂舒亠 before_鍖lter. 仆 弍亠仗仂从仂亳, 仂 从仂亟 从仂仆仂仍仍亠舒 弍亟亠 于仗仂仍仆 仗仂仍亠 亠亟亳亠从舒 于 亳仍亠. 于仂亠亞仂 弍亠仗仂从仂亶于舒 仂仆 亰舒弍于舒亠 从舒从 仂 仂仄, 仂 仆亢仆仂 于仂亰于舒舒 false, 舒从 亳 仂 仂仄, 仂 仗仂仍亠 亠亟亳亠从舒 仂 亢亠 仍亳仆亠亠.
  • 20. 仂仍亠亠 仗仂仂亠 仂弍仆亠仆亳亠 仂亟 弍仍 仗亠亠仆亠亠仆 于 亳仍 亳亰 从亠仆舒. 仂亞舒仄仄亳 仗仂仂 仆亠 仂亠 亠亞仂 仗亠亠仗亳于舒, 仗仂仂仄 从舒从 从舒亢亠, 仂 仂 于仂亰于舒 仆亢亠仆 (于仂亰于舒舒亠仄 从 亳仂亟仆仂仄 仂弍仆亠仆亳).
  • 21. Metaprogramming to the recsue if permission.can? can permission.action.to_sym, subject else cannot permission.action.to_sym, subject end vs. method = permission.can? ? :can : :cannot send method, permission.action.to_sym, subject
  • 22. 弌仗仂仂弍 弍仂弍 仆舒仆亳亠 磶从舒 亳亳亠从亳亶 于亰亞仍磲 仆舒 于仂亶 从仂亟 Let it fail (hoptoad 于 仗仂仄仂)

Editor's Notes