相关疑难解决方法(0)

如何在Ruby中获取父级的类名

让我们假设我有一个类AB那里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)

谢谢 :)

ruby

76
推荐指数
5
解决办法
5万
查看次数

FactoryGirl工厂用于命名空间类

任何证明或反驳我的想法的文件链接都将非常感激; 我似乎找不到任何东西.

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 rspec ruby-on-rails factory-bot

8
推荐指数
1
解决办法
2579
查看次数

如何检查类或模块是否已命名空间?

我正在使用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?方法有关.

ruby namespaces ruby-on-rails class ruby-on-rails-3

3
推荐指数
1
解决办法
887
查看次数