def*_*cro 9 ruby ruby-on-rails
我是一个新的Ruby/Rails人.这是一个令我困惑的问题:
我们可以从API文档中找到Rails中的类的精确模块列表吗?例如,如果我们有一个ActiveRecord :: Base子类的实例,我们可以在这个类中使用validates方法,如下所示:
class Product < ActiveRecord::Base
has_many :line_items
validates :title, :description, :image_url, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
从rails api doc我们可以发现validate属于ActiveModel :: Validations :: ClassMethods,所以ActiveRecore :: Base必须有ActiveModel :: Validations :: ClassMethods mixin,但我没有在api引用中找到任何与此相关的内容.任何人都可以告诉我,我是否可以从api doc找到这些信息?
感谢您的所有帮助.我真的希望我的问题听起来不太傻:)
在控制台中:
ActiveRecord::Base.included_modules
Run Code Online (Sandbox Code Playgroud)
我在我见过的任何 Rails 文档中都没有看到类似的内容:
对于猴子修补,可能没有任何方法可以知道,直到 Rails 全部启动并且您手中有一个实际的 ActiveRecord::Base ;例如,PostgreSQL、MySQL 和 SQLite 适配器重新打开 ActiveRecord::Base,并且它们可能在此过程中包含额外的模块;您正在使用的其他 gem,甚至您自己的代码也可能会执行类似的操作。
如果您只是想了解标准的 mixin 集,请使用源代码(Luke!)或按照 maniek 的建议进行操作并在 Rails 控制台中询问 ActiveRecord::Base。
一般来说,除非您已经知道要查找的内容,否则 Rails API 文档并没有多大用处,即使这样,通常也需要深入研究源代码。
最好的办法是检查指南以了解您需要的内容,如果这不起作用,请阅读源代码。
简短的回答:您无法从文档中获取列表,因为直到运行时才能知道模块。如果您需要了解某些信息,请阅读指南和来源。