2009-07-16 41 views
17

मैं जनरेटर स्क्रिप्ट का उपयोग कर रेल में एक मॉडल और संबंधित डेटाबेस तालिका उत्पन्न करना चाहता हूं। डेटाबेस तालिका में "enum" प्रकार वाला फ़ील्ड है। मैं इसे कैसे उत्पन्न कर सकता हूं?एनम प्रकार फ़ील्ड के साथ मॉडल कैसे उत्पन्न करें?

तालिका एसक्यूएल में परिभाषा:

create table works { 
    id int unsigned not null auto_increment, 
    nickname varchar(20) not null, 
    sex enum('m', 'f') not null 
}; 

रेल जनरेटर आदेश:

script/generator work nickname:string sex:(what should I write here?) 

उत्तर

5

तुम सिर्फ एक स्ट्रिंग इस्तेमाल कर सकते हैं और उसके बाद इस तरह के मॉडल पर मान्यता जोड़ें:

validates_inclusion_of : लिंग,: = =% डब्ल्यू (एमएफ)

4

दुर्भाग्य से, वीए ढक्कन स्तंभ प्रकार हैं: पूर्णांक, फ्लोट, दिनांक, तिथि, टाइमस्टैम्प, समय, पाठ, स्ट्रिंग, द्विआधारी, और बूलियन

स्तंभ एक स्ट्रिंग बनाने और validates_inclusion_of का उपयोग करें।

+0

लिंक काम नहीं कर रहा है। –

+0

@ ऋषभसिंहल धन्यवाद, मैंने टूटा लिंक हटा दिया। – erik

27

रेल 4.1 जोड़ा ActiveRecord::Enum है, जो एक integer प्रकार स्तंभ का उपयोग enums emulates को enum समर्थन जोड़ने के लिए। आप तब तक उनका उपयोग कर सकते हैं जब तक कि आप कॉलम प्रकार को डेटाबेस में पूर्णांक में बदलने के इच्छुक हों।

इन enums के लिए, अपने उत्पन्न आदेश में integer डाल:

bin/rails generate Work nickname:string sex:integer 

तब उत्पन्न मॉडल फ़ाइल में enum के लिए एक कॉल जोड़ें:

class Work < ActiveRecord::Base 
    enum sex: [ :male, :female ] 
end 

अधिक जानकारी के लिए Enum’s documentation देखें।

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