self относится к текущему объекту.
Внутри класса self используется для определения метода уровня класса.
class Foo
def self.for(facebook_id)
User.create_by_facebook_id(facebook_id)
end
end
определяет метод класса для в классе Foo. Вызывается:
Foo.for(facebook_id)
Вы можете узнать методы класса в Google, чтобы узнать больше.
Возможно, часть Rails или плагин / гем ожидает, что у некоторых классов будет метод класса "for". В этом отношении было бы полезно больше контекста.
Что делает метод
Как обычно для методов класса, он создает экземпляр класса. Например, класс ActiveRecord имеет метод класса «create», который пытается создать экземпляр класса модели, который был сохранен в базе данных. Таким образом, User.create вернет экземпляр класса User, который был сохранен в базе данных.
В вашем примере кода он вызывает метод класса "create_by_facebook_id", который предоставляется классом User в приложении.
Похоже, что метод "for" используется для сокрытия информации, поскольку все, что он делает, - это вызывает другой метод (для User.create_by_facebook)
Добавлено:
Кстати, возвращаемое значение по умолчанию из методов Ruby - это значение последнего оператора. Таким образом, ваш пример метода вернет новый пользовательский экземпляр из предоставленного facebook_id.