2011-07-06 15 views
5

क्यों मैं कुछ इस तरह नहीं कर सकते:रेल में किसी तालिका में कॉलम के रूप में मैं सरणी क्यों नहीं बना सकता?

class CreateModels < ActiveRecord::Migration 
    def self.up 
    create_table :fruit do |t| 
     t.array :apples 
    end 
    end 
end 

वहाँ एक सरणी बनाने के लिए ("सेब) फल वर्ग का एक उदाहरण की एक विशेषता हो कुछ अन्य रास्ता नहीं है

उत्तर

1

चेक बाहर Rails guide on associations (has_many पर विशेष ध्यान दें)।

आप किसी भी स्तंभ का उपयोग कर सकते अपने डेटाबेस द्वारा समर्थित प्रकार (t.columnt.type के बजाय उपयोग करें), हालांकि यदि डीबी में पोर्टेबिलिटी चिंता का विषय है, तो मेरा मानना ​​है कि सक्रिय रूप से सक्रिय द्वारा समर्थित प्रकारों से चिपकने की अनुशंसा की जाती है।

यह फल के लिए बहुत मजेदार लगता है कि कई सेब हैं, लेकिन हो सकता है कि यह सिर्फ एक उदाहरण है? (मैं उम्मीद करता हूं कि सेब फल का उप-वर्ग बनें)।

+0

सावधान, SQL99 सरणियों शामिल है, लेकिन मैं (पता नहीं कैसे राह में अग्रसर वे कर रहे हैं PostgreSQL कम से कम उनका समर्थन करता है)। –

+0

@mu बहुत छोटा है: धन्यवाद, मुझे SQL99 में सरणी समर्थन के बारे में पता नहीं था। अगर मैं सही स्पेस पढ़ रहा हूं तो वे बिल्टिन डेटाटाइप तक ही सीमित हैं, इसलिए आप अभी भी सेब की एक सरणी से दूर नहीं जा पाएंगे। – cam

+0

लेकिन आप सेब आईडी की एक सरणी से दूर हो पाएंगे। मुझे नहीं पता कि कितने व्यापक रूप से समर्थित सरणी हैं, SQL99 केवल 12 साल पुराना है और डेटाबेस विक्रेता पोर्टेबिलिटी और मानकों आधारित सिस्टम की ओर बढ़ने के लिए तेज़ी से नहीं हैं :) –

2

आप उपयोग कर सकते हैं? serialize। लेकिन अगर एक एप्पल एक एआर वस्तु होने जा रहा है, का उपयोग associations

16

रेल 4 में और PostgreSQL का उपयोग कर आप वास्तव में डीबी में एक सरणी प्रकार का उपयोग कर सकते हैं:

प्रवासन:

class CreateSomething < ActiveRecord::Migration 
    def change 
    create_table :something do |t| 
     t.string :some_array, array: true, default: [] 
     t.timestamps 
    end 
    end 
end 
संबंधित मुद्दे

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