Ruby 使用 Duck 类型
Ruby 不会像你想象的那样使用类型。方法只返回最后评估的任何表达式。您可以对返回值做任何您想做的事情,包括:
#inspect它。
- 问其
#class。
- 看看会不会
#respond_to?有什么方法。
- 无论你想用它做什么。
至于你的问题...
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 )。但是,您可以通过使用鸭子类型来处理返回的对象,从而为自己省去很多麻烦。