안녕하세요 저는 Shopify 응용 프로그램에서 Shopify 보석을 사용하고 있으며 Shopify에 대한 API 연결을 처리하는 방법에 대한 제안을 찾고 있습니다.Shopify 보석을 사용하여 Shopify API 연결을 처리하는 방법은 무엇입니까?
컨트롤러 외부에서 연결을 열려면 webhooks 및 delayed_jobs를 사용하고 있습니다. 예를 들어
def connect_to_store
session = ShopifyAPI::Session.new(self.url, self.access_token)
session.valid?
ShopifyAPI::Base.activate_session(session)
end
그래서 내가 아주 쉽게 연결을 열 수 있습니다 : : 내 쇼핑 모델에이 방법을 추가 한 순간에
문제는Shop.find(1).connect_to_store
ShopifyAPI::Shop.current.name
, 나의 제품 내부 모듈을 사용하려면 몇 가지 메서드 내에서 연결을 열어야하지만 connect_to_store 메서드를 여러 번 호출하면 결국 실제 필요없이 같은 저장소에 여러 연결을 열지 걱정됩니다.
연결이 이미 열려 있는지 확인하고 다른 연결을 찾을 수없는 경우에만 새 연결을 열 수 있습니까?
감사합니다, 아우
------------------- UPDATE ----------------- -
문제점을 더 잘 설명합니다.
내 제품 모델에서 특정 제품의 가격이 compare_at_price보다 높고이 경우 Shopify 제품에 "판매"태그를 추가하고 싶습니다. 내 제품 모델에서
내가 가진 :
p.update_sale_tag
을 Shop.connect_to_store 여러 번 호출되고 난 동안 여러 번 인증 :
class Product < ActiveRecord::Base
belongs_to :shop
def get_from_shopify
self.shop.connect_to_store
@shopify_p = ShopifyAPI::Product.find(self.shopify_id)
end
def add_tag(tag)
@shopify_p = self.get_from_shopify
shopify_p_tags = shopify_p.tags.split(",")
shopify_p_tags.collect{|x| x.strip!}
unless shopify_p_tags.include?(tag)
shopify_p_tags << tag
shopify_p_tags.join(",")
shopify_p.tags = shopify_p_tags
shopify_p.save
end
end
def on_sale?
@shopify_p = self.get_from_shopify
sale = false
shopify_p.variants.each do |v|
unless v.compare_at_price.nil?
if v.compare_at_price > v.price
sale = true
end
end
end
return sale
end
def update_sale_tag
if self.on_sale?
self.add_tag("sale")
end
end
end
내 문제는 내가 호출하는 경우이다 이미 인증되었습니다.
어떻게이 코드를 리팩토링합니까?
큰 소리가 난다! 어디에서 "시작 ... 보장"코드를 넣어야하는지 이해하지 못했습니다. – Augusto
나는 "ShopifyAPI :: Base"클래스가 무엇인지 이해하고 있는지 잘 모르겠다. 왜 .site 속성을 nil로 설정합니까? 나는 이것이 매우 기초적이라는 것을 알고 있지만 나는 아직도 그것을 얻지 못한다 :( – Augusto