-1

Ruby 相对较新,我在文档方面遇到了很多麻烦。我的主要问题是,我如何判断一个方法返回什么类型的对象?

如果我看一下 Objective-C 或 Java 文档,我可以看到:

FunctionX 返回 Y 类型的对象。

我可以单击 Y 并了解有关该课程的所有信息。将其与 ActiveRecord::Base 的文档进行对比。如果我查看该#connection方法,它会告诉我:

Returns the connection currently associated with the class. 

什么是连接?我想了解更多关于连接对象的类。不是每个方法都指定返回类型是什么吗?

4

1 回答 1

2

Ruby 使用 Duck 类型

Ruby 不会像你想象的那样使用类型。方法只返回最后评估的任何表达式。您可以对返回值做任何您想做的事情,包括:

  1. #inspect它。
  2. 问其#class
  3. 看看会不会#respond_to?有什么方法。
  4. 无论你想用它做什么。

至于你的问题...

Rails 文档对于您通常希望在应用程序中接触的内容相当全面,但它们对内部结构可能不太清楚。不过,ActiveRecord::Base的 API 文档似乎一点也不不清楚。

连接通常通过::establish_connection 创建并由#connection 检索。从 ActiveRecord::Base 继承的所有类都将使用此连接。

出于实际目的,您将返回一个描述通常在config/database.yml文件中定义的数据库连接的对象。例如:

$ rails runner 'puts ActiveRecord::Base.connection.class'
ActiveRecord::ConnectionAdapters::SQLite3Adapter

如果您想了解 Rails 的内部结构,您可能需要了解一些深层嵌套的方法调用并了解支撑该框架的 Ruby 元编程(例如BasicObject#method_missing )。但是,您可以通过使用鸭子类型来处理返回的对象,从而为自己省去很多麻烦。

于 2013-01-20T09:07:02.283 回答