我试图在Rails api文档中找到某些函数。例如,在控制台中我可以输入:
的ActiveRecord :: Base.connection.tables
的ActiveRecord :: Base.connection.indexes( “sometable”)
并获取一个表列表和一个索引列表。我查看Rails api doc, 但找不到任何参考。
我找到了connection()
但是那条小路就在那里结束了!有点帮助搞清楚api!
感谢...
答案 0 :(得分:1)
ActiveRecord::Base#connection内部依赖于ActiveRecord::Base.connection(类方法),它返回ActiveRecord::ConnectionAdapters::AbstractAdapter类的具体实现。
您应该在具体适配器中搜索#indexes
方法,例如PostgreSQLAdapter#indexes。
RDoc不提供方法调用返回的对象类型的任何提示。您应该深入了解源代码或深入了解包本身。 还有Yard等替代方法可以生成更完整的API文档。
还有Rails Searchable API Doc项目提供可搜索的Rails API。 您可以输入方法名称并列出实现该方法的所有对象。
答案 1 :(得分:1)
# in /vendor/rails/activerecord/lib/
$ ack -a 'def indexes'
active_record/connection_adapters/mysql_adapter.rb
449: def indexes(table_name, name = nil)#:nodoc:
active_record/connection_adapters/postgresql_adapter.rb
664: def indexes(table_name, name = nil)
active_record/connection_adapters/sqlite_adapter.rb
233: def indexes(table_name, name = nil) #:nodoc:
active_record/connection_adapters/abstract/schema_statements.rb
28: # def indexes(table_name, name = nil) end
active_record/schema_dumper.rb
166: def indexes(table, stream)
Ack是better than grep,但如果你愿意,也可以使用grep。
答案 2 :(得分:1)
首先,您可以浏览Rails api doc。大多数时候,这会回答你的问题。但是对于一些问题,你会在你注意到的时候陷入困境 这主要表明很难得到答案,因为没有文件存在。所以你有两个选择:不要使用你正在寻找信息的方法/功能,而是使用别的东西。或者准备好花大量时间浏览the Rails sources on github。
使用类似Google query的内容来访问特定的github部分。这将主要发送给你正确的文件,但在某些blob而不是master,所以在主树中找到相同的文件,所以你知道你正在寻找的东西在你的Rails中可用(假设你正在使用主/未修改版本)
下一部分比较困难,你现在找到了retrieve_connection
方法,但它使用了另一种方法retrieve_connection_pool
,它在 active_record / connection_adapters(/ abstract)中的某个地方使用1} i>目录路径。哪个是使用其他类,在...中找到,等等......
如果您浏览来源,则会出现这种情况。过了一段时间,你可能会掌握它并变得更习惯于找到你需要的东西。但以这种方式找到答案总是需要做很多工作。
所以我猜是你的选择。
PS 您可以尝试在Google中键入一些 ActiveRecord :: Base.connection表索引,而不是使用Rails API,希望有人写一篇文章在这些主题上,Rails为你做了研究。