2015-01-15 4 views
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 디렉토리/사기꾼

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 

오른쪽 I 실행 레일 콘솔을 시작한 후 : /girls.rb의 모습 Rails.root.join 필요 'lib 디렉토리/사기꾼을/여자'는 진정한는 반환합니다.

다음 명령을 실행하면 예상대로 작동하지 않습니다.

출력 :

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

내가 잘못 어디로 갔는지 나를 찾아 도와주세요 ..

답변

1

당신은 parsefetch을 혼합 최대 : 간단한 속성을 구성하면서 fetch 에드 수 있습니다 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 
    ... 

희망이 있습니다.

+0

도와 주셔서 감사합니다 ... – whizcreed

+0

mudasobwa는 이메일에 동일한 변수를 사용하는 방법을 알려줄 수 있습니다 .. - "# {first_name}. # last_name 도메인 com " 그러나 이것은 다른 이름과 성을 사용합니다. 미리 감사드립니다. – whizcreed

+0

일반적으로 말해서 변수를 '가져와야합니다'. 'fetch' (놀랍게도)는 주어진 입력으로부터 무작위 값을 가져옵니다. 가져 와서 어딘가에 저장하고 사용하십시오. – mudasobwa