让我们假设我有一个类A和B那里B继承A.如何在中打印父类名称B
class A
end
class B < A
end
Run Code Online (Sandbox Code Playgroud)
我试过的一些事情
>> B.new.class #=> B #which is correct
>> B.new.parent #=> Undefined method `parent`
>> B.parent #=> Object
>> B.parent.class #=> Class
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
任何证明或反驳我的想法的文件链接都将非常感激; 我似乎找不到任何东西.
AFAIK,如果您有一个带Product模型的Rails应用程序,您可以将FactoryGirl工厂定义为
FactoryGirl.define do
factory :product do
# stuffs
end
end
Run Code Online (Sandbox Code Playgroud)
然后在测试中调用工厂(RSpec示例)
let(:product) { FactoryGirl.create(:product) }
Run Code Online (Sandbox Code Playgroud)
但你也可以用它来打电话
let(:product) { FactoryGirl.create(Product) }
Run Code Online (Sandbox Code Playgroud)
如果您希望保持模型测试更加动态并且可以使用RSpec的described_class帮助程序自由更改,这将非常有用.
我的问题:
我有一个恰好是命名空间的模型
class Namespace::MyModel < ActiveRecord::Base
# model stuffs
end
Run Code Online (Sandbox Code Playgroud)
与工厂
FactoryGirl.define do
factory :my_model, class: Namespace::MyModel do
# factory stuffs
end
end
Run Code Online (Sandbox Code Playgroud)
当试图使用RSpec的助手时......
RSpec.describe Namespace::MyModel do
let(:my_object) { FactoryGirl.create(described_class) }
# testing stuffs
end
Run Code Online (Sandbox Code Playgroud)
FactoryGirl抱怨工厂丢失
Factory not registered: Namespace::MyModel
Run Code Online (Sandbox Code Playgroud)
我是否错过了FactoryGirl的这个功能,却没有理解它的真正目的?或者是否有另一种方法可以定义我的工厂以正确解析?
我正在使用Ruby on Rails 3.2.2,我想知道是否可以检查类或模块是否是命名空间.也就是说,我想运行类似下面的内容
ANamespaceName::AnotherNamespaceName::AClassName.is_namespaced?
#=> true
ANamespaceName::AClassName.is_namespaced?
#=> true
AClassName.is_namespaced?
#=> false
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,问题与声明/实现该is_namespaced?方法有关.