1

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 コンソールを起動した直後に次を実行します: true が返される require Rails.root.join 'lib/faker/girls' 。

その後、次のコマンドを実行しても期待どおりに動作しません。

出力:

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}"

私が間違っていた場所を見つけるのを手伝ってください..

4

1 に答える 1

1

ごちゃ混ぜです: 単純なプロパティはed で、構成はparseです。もう 1 つの不具合は、クラス名が (慣例により) yml に対応している必要があることです。fetchfetchparsed

#         ⇓
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
  ...

それが役に立てば幸い。

于 2015-01-15T09:26:16.187 に答える