Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Ruby或Rails中,为什么是;包括「;有时在课堂内,有时在课堂外?_Ruby On Rails_Ruby_Module_Mixins - Fatal编程技术网

Ruby on rails 在Ruby或Rails中,为什么是;包括「;有时在课堂内,有时在课堂外?

Ruby on rails 在Ruby或Rails中,为什么是;包括「;有时在课堂内,有时在课堂外?,ruby-on-rails,ruby,module,mixins,Ruby On Rails,Ruby,Module,Mixins,我想 class ApplicationController < ActionController::Base include Foo class ApplicationController

我想

class ApplicationController < ActionController::Base
  include Foo
class ApplicationController
就是添加一个“mixin”——这样Foo模块中的所有方法都被视为ApplicationController的方法

但现在我看到的代码是

include Bar

class ApplicationController < ActionController::Base
  include Foo
包含条
类ApplicationController

那么为什么它不在应用程序控制器的范围内呢?这与将其放在
ApplicationController
中的更常见用法有何不同

是的,
include Foo
在类中向该类的祖先添加
Foo
,从而使所有
Foo
的实例方法可用于这些类的实例


在任何类定义之外,
include Foo
会将
Foo
添加到
对象的祖先。也就是说,这与在
对象
类的定义中包含Foo
是一样的。这样做的用途是所有的
Foo
实例方法现在都可以在任何地方使用。

包括Bar
,就像这是一个有害的错误-它会改变
应用程序控制器的方式,但也会改变应用程序中的其他对象。