无法扩展 faker gem

Unable to extend faker gem

我正在遵循以下说明: http://cloudspace.com/blog/2013/10/18/extending-faker/#.VLdumx9sY8o

我的 /config/locales/faker.en.yml 看起来像:

en:
  faker:
    girls: 
      first_name: ["priyanka", "Tanya", "aditi", "Tanvi"]
      last_name: ["Acharya", "Agarwal", "Agate", "Aggarwal"]
      name: 
       - "#{first_name} #{last_name}"

我有以下内容:/lib/faker/girls.rb 看起来像:

module Faker
  class Girl < Base
    class << self
      def first_name
        parse('girls.first_name')
      end

      def last_name
        parse('girls.last_name')
      end

      def name
        fetch('girls.name')
      end
    end
  end
end

启动后 rails 控制台 I 运行:需要 Rails.root.join 'lib/faker/girls' 返回 true。

之后 运行以下命令无法按预期工作。

输出:

2.1.1 :004 > Faker::Girl.first_name  => "" 
2.1.1 :005 > Faker::Girl.last_name  => "" 
2.1.1 :006 > Faker::Girl.name  => "\#{first_name} \#{last_name}"

请大家帮我看看哪里出错了..

您混合了 parsefetch:简单的属性将被 fetch 编辑,而组合的属性将被 parsed 编辑。另一个问题是您的 class 名称应该对应于 yml(按照惯例):

#         ⇓
class Girls < Base
  class << self
    def first_name
     #⇓⇓⇓⇓⇓ it is a simple property 
      fetch('girls.first_name')
    end

    def last_name
     #⇓⇓⇓⇓⇓ it is a simple property 
      fetch('girls.last_name')
    end

    def name
     #⇓⇓⇓⇓⇓ it is a composed property 
      parse('girls.name')
    end
  ...

希望对您有所帮助。