Позвольте мне представить это для вас.
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"
Как это возможно? Каким-то образом они определяют конец цепочки методов и действуют в соответствии с этим? По крайней мере, это моя теория.
Кто-нибудь может объяснить такое поведение?