2013-10-02 8 views
6

क्या फैक्टरीगर्ल के लिए 0-10 से यादृच्छिक संख्या परिभाषित करना संभव है?फैक्टरीगर्ल में यादृच्छिक संख्या कैसे प्राप्त करें?

factory :rating do 
     ranking 1 #random number? 
     recipe 
    end 

मुझे वास्तव में 0-10 के बीच एक यादृच्छिक मूल्य होने के लिए रैंकिंग संख्या पसंद है।

मैं अलग-अलग संख्याओं के साथ रेटिंग जेनरेट करना चाहता हूं, लेकिन उन्हें स्पष्ट रूप से आरएसपीईसी में परिभाषित नहीं करना चाहता हूं। इसका उपयोग रेटिंग संख्याओं से औसत और अन्य आंकड़ों को प्रदर्शित करने के लिए किया जाएगा। पूर्व: कितने 10, कितने 0, औसत आदि

उत्तर

4

ऐसा कुछ संभवतः?

FactoryGirl.define do 
    sequence(:random_ranking) do |n| 
    @random_rankings ||= (1..10).to_a.shuffle 
    @random_rankings[n] 
    end 

    factory :user do 
    id { FactoryGirl.generate(:random_ranking) } 
    end 
end 

Reference here

+1

यह काम करता है, मैं उत्पन्न आदेश के बारे में पता नहीं था। इसे देखकर आप फैक्ट्रीगर्ल भाग को छोड़ सकते हैं और बस 'आईडी {जेनरेट (: random_ranking)} ' – ChrisBarthol

12

संस्करण 4.4 के रूप में, मेरे लिए निम्नलिखित काम करता है ...

factory :rating do 
    ranking {rand(1..10)} 
    recipe 
end 

और यादृच्छिकीकरण की एक अलग उपयोग के लिए:

FactoryGirl.define do 
    factory :plan do 
    name {["Free", "Standard", "Enterprise"].sample} 
    price {Faker::numerify('$##')} 
    end 
end 

एक बनाना कुछ उदाहरण, आप नाम के यादृच्छिकरण, और मूल्य के यादृच्छिकरण देख सकते हैं:

2.0.0-p247 :010 > 4.times.each {FactoryGirl.create(:plan)} 
2.0.0-p247 :011 > ap Plan.to_list 
[ 
    [0] [ 
     [0] "Free: $48", 
     [1] BSON::ObjectId('549f6da466e76c8f5300000e') 
    ], 
    [1] [ 
     [0] "Standard: $69", 
     [1] BSON::ObjectId('549f6da466e76c8f5300000f') 
    ], 
    [2] [ 
     [0] "Enterprise: $52", 
     [1] BSON::ObjectId('549f6da466e76c8f53000010') 
    ], 
    [3] [ 
     [0] "Free: $84", 
     [1] BSON::ObjectId('549f6da466e76c8f53000011') 
    ] 
] 
+1

अच्छा समाधान है, हालांकि मैं इसके बजाय ऐरे क्लास में नमूना विधि का उपयोग करने का सुझाव दूंगा। नाम {["नि: शुल्क", "मानक", "उद्यम"]। नमूना} – Richard

संबंधित मुद्दे