Ruby on rails ActiveRecord::Base中的self和scope

Ruby on rails ActiveRecord::Base中的self和scope,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,可以预见,这将返回false self.method_defined? :fdsafdafewafd 可以预见的是,这一结果是正确的 self.method_defined? :data_source 这导致: self.data_source NoMethodError: # 我的问题是,鉴于这一事实(我怀疑这与范围有关),为什么上面的这一行会返回真值?如果该方法未在此范围内定义,是否应定义方法_?返回false?已附加文件:数据源向名为数据源的图形类添加实例方法。这就是为什么定义了s

可以预见,这将返回false

self.method_defined? :fdsafdafewafd
可以预见的是,这一结果是正确的

self.method_defined? :data_source
这导致:

self.data_source
NoMethodError:
#

我的问题是,鉴于这一事实(我怀疑这与范围有关),为什么上面的这一行会返回真值?如果该方法未在此范围内定义,是否应定义方法_?返回false?

已附加文件:数据源
向名为
数据源
图形
类添加实例方法。这就是为什么定义了
self.method\u?:数据源
返回
true

但是,当您执行
self.data\u source
(相当于
Graph.data\u source
)时,您正在调用
Graph
类本身上的方法
:data\u source
,该方法未定义;因此出现了错误。只能在Graph类的对象上调用该方法

如果要创建图形的新实例化,例如
g=Graph.new
,则可以按预期执行
g.data\u source

self.data_source
NoMethodError:   undefined method `data_source' for
#<Class:0x0055dd1d71c6e0>