Tag: 子类

什么是用于创建子类模型/脚手架的Rails(> = 3.1)生成器语法?

在Rails中生成子类模型或脚手架的命令行语法是什么? rails g model Mysubclass my_field:string …. 如何指定父类?

不同的路由,但在Rails中使用相同的控制器进行模型子类

我有一个Model属性,它有使用STI的子类, 并且我希望所有人都使用相同的控制器,只有不同的视图部分取决于子类。 Property Restaurant < Property Landmark < Property 除了我不确定如何辨别控制器内的子类以呈现正确的视图之外,它还可以工作。 IE浏览器。 /餐厅工作,并去物业控制器,但我不能告诉他们,他们想要餐厅的子类? map.resources :restaurant, :controller => :properties map.resources :properties

如何使用rspec检查变量是否是模块子类的实例?

我有一个类似于以下的类结构: module MyModule class MyOuterClass class MyInnerClass end end end 我正在尝试确保使用Rspec将变量正确实例化为MyInnerClass。 打印类的类型,它是MyModule :: MyOuterClass :: MyInnerClass。 但是,如果我尝试运行该行 expect{@instance_of_MyInnerClass}.to be_an_instance_of(MyModule::MyOuterClass::MyInnerClass) 我收到错误“你必须通过一个参数而不是一个块来使用提供的匹配器。” 此外,课程在另一个地方,所以我不能只检查 […] be_an_instance_of(MyInnerClass) Rspec抱怨MyInnerClass是一个未初始化的常量。 所以,我想问一下如何使用RSpecvalidation变量是否是MyInnerClass的实例。

列表子类在Ruby脚本/控制台中不起作用?

这有效: >> class Foo >> def xyz() >> Foo.subclasses >> end >> end => nil >> class Bar > end => nil >> class Quux > end => nil >> Foo.new.xyz() => [“Quux”, “Bar”] 但事实并非如此。 User是我的应用程序中的一个类。 >> User.subclasses NoMethodError: protected method `subclasses’ called for # from […]/vendor/rails/activerecord/lib/active_record/base.rb:1546:in `method_missing’ from (irb):13 但这样做! >> Foo.subclasses => [“Quux”, […]

Ruby可以子类化实例变量_overwrite_超类(同名)吗?

在“ruby编程语言”一书的第7.3.5节“inheritance和实例变量”中说: 因为实例变量与inheritance无关,所以子类使用的实例变量不能“遮蔽”超类中的实例变量。 如果子类使用与其祖先之一使用的变量同名的实例变量,它将覆盖其> ancestor变量的值。 这可以有意地完成,以改变祖先的行为,或者可以无意中完成。 在后一种情况下,几乎可以肯定会导致错误。 与前面描述的私有方法的inheritance一样,这是另一个原因,当您熟悉(并控制)超类的实现时,扩展Ruby类是安全的。 我做了自己的测试,但似乎来自子类的实例变量不会影响超类 我的Ruby版本 bob@bob-ruby:~$ ruby –version ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux] bob@bob-ruby:~$ 以下是代码 class Point attr_accessor :x,:y def initialize(x,y) @x,@y=x,y end end class Point3D p=Point.new(1,2) => # irb(main):053:0> q=Point3D.new(4,5,6) => # irb(main):054:0> qx => 4 irb(main):055:0> px => 1 irb(main):056:0>

如何将类包含在类中

如何获取类中包含的模块数组,不包括那些通过inheritance传入的模块? 请注意, ancestors , included_modules将不起作用,因为它们的结果不区分包含在超类中预先添加的模块的模块。 换句话说,他们无法区分以下两种情况: M置于B的超类 class A; end class B [B, M, A, Object, Kernel, BasicObject] B M # => -1 B.included_modules # => [M, Kernel] M包含在B class A; end class B [B, M, A, Object, Kernel, BasicObject] B M # => -1 B.included_modules # => [M, Kernel]