मेरे पास एक 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
यह <