Mam aplikację Shopify, która uruchamia wywołanie zwrotne po utworzeniu nowego sklepu. Właśnie odkryłem błąd, który powodował, że po odinstalowaniu aplikacji, a następnie ponownym jej uruchomieniu, wywołanie zwrotne nie zostało uruchomione, ponieważ sklep nie został ponownie utworzony (nie usuwam sklepów z mojej bazy danych podczas odinstalowywania).Shopify Rails App: wyzwalanie Utwórz oddzwonienie do ponownego zainstalowania sklepu
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
Mogę uruchomić kontrolę, aby sprawdzić, czy shop.installed = false, a następnie, jeśli jest to fałsz, mogę init_webhooks. Ale nie jestem pewna, gdzie powinienem umieścić tę logikę. Nie wiem, czy warto umieścić w sklepie lub pobrać metody.
Zastanawiam się, czy jest coś prostego, czego mi brakuje. Zasadniczo chcę uruchomić moje init_webhooks, jeśli webhooks nie istnieją.
EDIT: Próbowałem poniżej rozwiązanie refactoring moje zwrotnych do własnego sposobu czym mogę sprawdzić, czy jest zainstalowana aplikacja, a następnie, jeśli nie, uruchom Metody chcę na nowych instalacjach:
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
Wydaje się, że działa dobrze w przypadku zupełnie nowych instalacji, ale po ponownym zainstalowaniu użytkownik nie wydaje się uwierzytelniać (przekierowuje do strony/login po wpisaniu adresu URL shopify) <