【问题标题】:Unable to extend faker gem无法扩展faker gem
【发布时间】:2015-03-13 15:00:12
【问题描述】:

我正在遵循以下指示: 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 控制台后,我立即运行: require 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}"

请帮我找出哪里出错了..

【问题讨论】:

    标签: ruby-on-rails ruby faker


    【解决方案1】:

    您将parsefetch 混合在一起:简单属性应为fetched,而组合属性应为parsed。另一个小问题是你的类名应该对应于 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
      ...
    

    希望对你有帮助。

    【讨论】:

    • mudasobwa 你能告诉我如何为电子邮件使用相同的变量吗?我添加了一个属性为 - "#{first_name}.#last_namedomaincom" 但这使用不同的名字和姓氏。提前谢谢..
    • 一般来说你应该fetch变量一次。 fetch(令人惊讶)从给定的输入中获取随机值。获取它,将其保存在某个地方并使用它。
    猜你喜欢
    • 2012-12-22
    • 2023-04-02
    • 2015-07-20
    • 2015-06-18
    • 2015-03-25
    • 2011-05-27
    • 2019-06-20
    • 2010-09-07
    相关资源
    最近更新 更多