我有一个Shopify应用程序,在创建新商店时运行回调。我刚发现一个错误,当应用程序被卸载,然后重新安装时,回调没有运行,因为商店实际上没有再次创建(我不会在卸载时从我的数据库中删除商店) )。
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
我可以检查shop.installed = false,然后如果它是假的,我可以init_webhooks。但我不知道我应该把这个逻辑放在哪里。我不知道是否适合放入商店或检索方法。
我想知道是否有一些我想念的简单事物。基本上我想运行我的init_webhooks,如果webhooks不存在。
编辑:我尝试了以下解决方案,将我的回调重构为他们自己的方法,我可以检查是否安装了应用程序然后,如果没有,在新安装上运行我想要的方法:UPDATE Serials
SET activationcount = activationcount + 1
WHERE Serial = 'XXX'
这似乎适用于全新的安装,但在重新安装时,用户似乎无法进行身份验证(在输入shopify网址后保持重定向到/ login页面)<
答案 0 :(得分:1)
您可以将此检查放在初始化程序中,这样当应用程序启动时,它只检查一次并在应用程序的其余部分加载或开始接收请求之前进行任何必要的设置。
<强>参考强>
http://guides.rubyonrails.org/configuring.html#using-initializer-files