2012-10-27 7 views
10

कल्पना कीजिए मैं निम्नलिखित मॉडल:क्या ActiveAdmin के साथ संबंधित डेटा बनाने/चुनने का कोई आसान तरीका है?

class Translation < ActiveRecord::Base 
    has_many :localizations 
end 

class Localization < ActiveRecord::Base 
    belongs_to :translation 
end 

अगर मैं ActiveAdmin में ऐसा करते हैं:

ActiveAdmin.register Localization do 
    form do |f| 
    f.input :word 
    f.input :content 
    end 
end 

शब्द के लिए संघ केवल मुझे मौजूदा शब्दों से चुनने के लिए अनुमति देगा। हालांकि, मैं फ्लाई पर एक नया शब्द बनाने का विकल्प चाहता हूं। मैंने सोचा कि यह स्थानीयकरण मॉडल में नेस्टेड विशेषताओं को स्वीकार करने के लिए उपयोगी हो सकता है (लेकिन फिर, मेरे पास केवल एक शब्द बनाने का विकल्प होगा, मौजूदा लोगों से चयन नहीं)। इस समस्या का समाधान किस प्रकार से किया जा सकता है?

+0

अपने ActiveAdmin में कैसे आप निर्धारित करने के लिए वर्तमान अनुवाद है चाहते हैं के बारे में महान पटरियों के कलाकारों है? –

+0

मुझे इसे मेनू से चुनने में सक्षम होना चाहिए, या एक नया अनुवाद और एक नया स्थानीयकरण बनाना चाहिए (सभी एक बार में) – Geo

उत्तर

10

मुझे लगता है कि आप इस

उदाहरण (परीक्षण नहीं)

class Localization < ActiveRecord::Base 
    attr_accessor :new_word #virtual attribute 
    attr_accessible :word_id, :content, :new_word 
    belongs_to :translation 
    before_save do 
    unless @new_word.blank? 
     self.word = Word.create({:name => @new_word}) 
    end 
    end 
end 

मुख्य विचार बना सकते हैं और स्थानीयकरण सहेजने से पहले नया पद उदाहरण स्टोर और word_id के बजाय इसका उपयोग करने के लिए है के लिए आभासी विशेषता का उपयोग कोशिश कर सकते हैं ड्रॉप-डाउन से। एक मेनू से चुनने या परम (यूआरएल द्वारा पारित) में संग्रहीत -

ActiveAdmin.register Localization do 
    form do |f| 
    f.input :word 
    f.input :content 
    f.input :new_word, :as => :string 

    end 
end 
वहाँ

आभासी विशेषताओं http://railscasts.com/episodes/167-more-on-virtual-attributes