我正在开发 Rails 应用程序,想了解何时使用 self.for
。
这是我想完全理解的方法的代码。如果可能的话,我希望有一个替代这段代码的方法,这样事情就更清楚了。
def self.for(facebook_id)
User.create_by_facebook_id(facebook_id)
end
最佳答案
self 引用当前对象。
在类中,self 用于定义类级方法。
class Foo
def self.for(facebook_id)
User.create_by_facebook_id(facebook_id)
end
end
在类 Foo 中定义了一个类方法for。它被调用:
Foo.for(facebook_id)
您可以通过谷歌搜索类方法以了解更多信息。
可能是 Rails 的一部分或插件/gem 期望某些类将有一个类方法“用于”更多上下文在这方面会有所帮助。
方法在做什么
对于类方法来说很常见,它是创建一个类的实例。例如,ActiveRecord 类有一个类方法“create”,它试图创建一个已存储在数据库中的模型类的实例。因此 User.create 将返回已存储在数据库中的 User 类的实例。
在您的示例代码中,它调用了应用程序中用户类提供的类方法“create_by_facebook_id”。
看起来“for”方法被用于信息隐藏,因为它所做的只是进行另一个方法调用(对 User.create_by_facebook)
添加:
顺便说一句,Ruby 方法的默认返回值是最后一条语句的值。因此,您的示例方法将返回根据提供的 facebook_id 新创建的用户实例。
关于ruby-on-rails - rails : when to use self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512908/