2017-12-10 129 views
11

एक डेटा आयातक में से नहीं है, मैं कोड है जो एक taggable के लिए ActsAsTaggableOn::Tagवस्तुओं का एक समूह जोड़ने का प्रयास कर रहा है टैग सूची:रेल "में कार्य करता है के रूप में taggable-ऑन": कैसे टैग को जोड़ने के लिए * वस्तुओं * taggables को, नाम

existing_item = FeedItem.where(url: item[:url]).first 

    if existing_item.nil? 
     new_item = FeedItem.new 

     new_item.attributes = item.except(:id, :feeds) 

     new_item.feeds = Feed.where(id: feeds_old_to_new(item_feeds, feeds)) 
     new_item.tag_list.add(
      ActsAsTaggableOn::Tag.where(id: tags_old_to_new(item[:tags], tags))) 

     new_item.save! 
    else 
     # ... merge imported record with existing item ... 
    end 

यह काम नहीं करता है, क्योंकि tag_list.addनाम टैग की एक सूची लेता है, वस्तुओं टैग नहीं। टैग ऑब्जेक्ट्स टैग जोड़ने का कोई तरीका है? मुझे दस्तावेज़ों के रूप में कुछ भी नहीं मिल रहा है-दस्तावेज पर, और इसके कोड को समझने के लिए बहुत जादू है (उदाहरण के लिए, Tag::concat स्वयं को बदलना प्रतीत नहीं होता है!)

मैं मानचित्र को मानचित्रित कर सकता हूं उनके नामों पर टैग, लेकिन फिर कार्य-जैसा-टैग करने योग्य-ऑन नाम कैनोनिकललाइजेशन चलाएगा जो उपयोगकर्ता इनपुट के लिए उपयुक्त है लेकिन थोक डेटा आयात के लिए नहीं है, इसलिए मैं ऐसा नहीं करना चाहता हूं।

उत्तर

3

मणि वास्तव में सिर्फ तुम्हारे लिए इस जोड़ रहा है:

has_many :taggings 
has_many :tags, through: :taggings 

(यह टैग, अनेक प्रकार के समर्थन करने के लिए एक छोटे से अधिक जटिल है, लेकिन the details बहुत सरल कर रहे हैं।)

तो आप उन का उपयोग कर सकते एसोसिएशन किसी अन्य की तरह।

ActsAsTaggableOn::Tag.where(id: tags_old_to_new(item[:tags], tags))).each do | t| 
    new_item.tags << t 
end 
+0

मैं कुछ है कि मुझे विश्वास है कि 'FeedItem' वस्तुओं एक' tags' संपत्ति _have_ नहीं है नेतृत्व करने का एक अलग याद है: आपके मामले में ऐसा कुछ होगा। 'FeedItem'] की परिभाषा [https://github.com/berkmancenter/tagteam/blob/master/app/models/feed_item.rb) में कुछ अजीब चीज़ें हैं - विशेष रूप से देखें कि यह': tag_context_hierarchy के साथ क्या कर रहा है '। क्या आप इससे निपटने के लिए अपने उत्तर में क्या बदलाव करने की आवश्यकता हो सकती है, इस बारे में कोई अतिरिक्त सलाह दे सकते हैं? – zwol

+0

इसमें एक सरल ['act_as_taggable' घोषणा] है (https://github.com/berkmancenter/tagteam/blob/master/app/models/feed_item.rb#L24)। मुझे इसे बदलने के लिए 'tag_context_hierarchy' में कुछ भी नहीं दिख रहा है। आप देख सकते हैं कि [यह 'टैग' एसोसिएशन का भी उपयोग करता है] (https://github.com/berkmancenter/tagteam/blob/master/app/models/feed_item.rb#L185-L189)। –

+0

हम्म, ठीक है। यह पर्याप्त जानकारी है कि मैं काम करने के लिए इस _ought_ पर विश्वास कर सकता हूं। मैंने बक्षीस को बुरी तरह से समय दिया; मैं इसे एक और महीने के लिए परीक्षण करने में सक्षम नहीं होगा। मैं आगे बढ़ने जा रहा हूं और आपको बक्षीस दूंगा, लेकिन जब तक मैंने वास्तव में इसका परीक्षण नहीं किया तब तक जवाब स्वीकार नहीं किया जाता। – zwol

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

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