2015-10-02 13 views
5

मेरे पास एक Shopify ऐप है जो एक नई दुकान बनने पर कॉलबैक चलाता है। मैंने अभी एक बग की खोज की है कि जब ऐप अनइंस्टॉल किया जाता है, तो फिर से अनदेखा किया जाता है, कॉलबैक नहीं चलाया जाता है क्योंकि दुकान वास्तव में फिर से नहीं बनाई जाती है (मैं अनइंस्टॉल करने पर अपने डीबी से दुकानों को हटा नहीं देता)।Shopify Rails App: एक दुकान के लिए कॉलबैक बनाएं ट्रिगर करना

class Shop < ActiveRecord::Base 
    include ShopifyApp::Shop 
    after_create :init_webhooks 

    def self.store(session) 
    shop = Shop.where(:shopify_domain => session.url).first_or_create({ shopify_domain: session.url, 
             :shopify_token => session.token, 
             :installed => true}) 
    shop.id 
    end 

    def self.retrieve(id) 
    shop = Shop.where(:id => id).first 
    if shop 
     ShopifyAPI::Session.new(shop.shopify_domain, shop.shopify_token) 
    else 
     nil 
    end 
    end 

मैं चला सकते हैं, तो = false shop.installed एक जांच को देखने के लिए, और फिर अगर यह गलत है, मैं init_webhooks कर सकते हैं। लेकिन मुझे यकीन नहीं है कि मुझे यह तर्क कहां रखना चाहिए। मुझे नहीं पता कि स्टोर के अंदर रखना या विधियों को पुनः प्राप्त करना उचित है या नहीं।

मुझे आश्चर्य है कि क्या कुछ आसान है जो मुझे याद आ रही है। मूल रूप से मैं अपने init_webhooks को चलाने के लिए चाहता हूं यदि webhooks मौजूद नहीं है।

संपादित करें: मैं अपने तरीके होते में मेरी कॉलबैक पुनर्रचना के नीचे समाधान की कोशिश की जिससे मैं अगर एप्लिकेशन इंस्टॉल है देखने के लिए जाँच सकते हैं और फिर, अगर नहीं, तरीकों मैं नए इंस्टॉल पर चाहते चलाएँ:

def self.retrieve(id) 
    shop = Shop.where(:id = id).first 
    if shop 
     shop.boot 
     ShopifyAPI::Session.new(shop.shopify_domain, shop.shopify_token) 
    else 
     nil 
    end 
    end 

    def boot 
    if !installed 
     shopify_session 
     init_webhooks 
     self.installed = true 
     self.save! 
    end 
    end 

यह <

उत्तर

1

आपको इस चेक डाल सकते हैं ब्रांड नए इंस्टॉल किए जाने के लिए ठीक काम कर रहा है, लेकिन एक फिर से स्थापित करने पर, उपयोगकर्ता (Shopify यूआरएल प्रवेश करने के बाद/प्रवेश पृष्ठ पर पुनः निर्देशित रहता है) को प्रमाणित करने के प्रतीत नहीं होता एक प्रारंभकर्ता के अंदर, जब ऐप शुरू होता है, तो यह केवल एक बार जांचता है और बाकी ऐप से पहले कोई आवश्यक सेटअप करता है भार लेता है या अनुरोध लेना शुरू करता है।


संदर्भ

http://guides.rubyonrails.org/configuring.html#using-initializer-files

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