Как ActiveRecord обнаруживает последний вызов метода в цепочке?

Позвольте мне представить это для вас.

class Product < ActiveRecord::Base
end

Product.first.title
#=> "My sample product"

Здесь нет ничего экстраординарного. Просто простой вызов метода. Теперь взгляните на следующий пример.

class Product < ActiveRecord::Base
  def method_missing
  end
end

Product.first.title
#=> nil

Product.first
Product.first.title
#=> "My sample product"

Как это возможно? Каким-то образом они определяют конец цепочки методов и действуют в соответствии с этим? По крайней мере, это моя теория.

Кто-нибудь может объяснить такое поведение?

5
задан Kevin Sjöberg 1 March 2012 в 16:53
поделиться