ruby-on-rails – 如何在Rails中找出哪个模块是mixin?

我是一个新的 Ruby / Rails人.这是一个令我困惑的问题:

我们可以从api文档中找到Rails中的类的精确模块列表吗?例如,如果我们有一个ActiveRecord :: Base子类的实例,我们可以在这个类中使用validates方法,如下所示:

class Product < ActiveRecord::Base
  has_many :line_items
  validates :title,:description,:image_url,:presence => true
end

从rails api doc我们可以发现validate属于ActiveModel :: Validations :: ClassMethods,所以ActiveRecore :: Base必须有ActiveModel :: Validations :: ClassMethods mixin,但我没有在api引用中找到任何与此相关的内容.任何人都可以告诉我,我是否可以从api doc找到这些信息?

在此先感谢您的所有帮助.我真的希望我的问题听起来不太傻:)

解决方法

在我见过的任何Rails文档中,我都没有看到类似的内容

> http://api.rubyonrails.org/
> http://apidock.com/
> http://rubydoc.info/

使用猴子修补,可能没有任何方法可以知道,直到Rails全部启动并且你手中有一个真正的ActiveRecord :: Base;例如,Postgresql,MysqLsqlite适配器重新打开ActiveRecord :: Base,它们可能包含额外的模块;你正在使用的其他宝石,甚至你自己的代码都可以做类似的事情.

如果你只是想知道mixin的标准集,请使用source(Luke!)或者像maniek建议的那样做,并在Rails控制台中询问ActiveRecord :: Base.

一般来说,Rails api文档没有那么有用,除非你已经知道你在寻找什么,即便如此,通常需要深入挖掘源代码.

您最好的选择是检查guides是否需要,如果不起作用,请阅读源代码.

简答:您无法从文档中获取列表,因为直到运行时才能知道模块.如果您需要了解某些内容,请阅读guides和来源.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...