Как показать товары в текущей таблице и товары из Shopify, если они уникальны - PullRequest
0 голосов
/ 06 июля 2018

Что я хочу:

Если @current_products пусто, выведите @new_products из магазина Shopify. Но, если @current_products не пусто, выведите на экран @current_products, а также добавьте любой уникальный @new_products из магазина Shopify. Я определяю уникальный продукт по product.id.

Пока у меня есть эта попытка:

 if @current_products.empty?            
   @new_products = ShopifyAPI::Product.find(:all)
 elsif
   @current_products.each_with_index do |u, index|        
     if index == @current_products.size       
        @new_products = ShopifyAPI::Product.find(:all)                  
        @new_products.delete_if do |product|
            if product.id.in?(@productIds)      
                true 
            end 
        end  
     end        
  end
 end

тогда мой эрб использует:

<% @current_products.each do |item| %>
      ...
<% end %>

<% @new_products.each do |item| %>
      ...
<% end %> 

Я знаю, что я делаю это неправильно, но это иллюстрирует то, что я пытаюсь сделать. Какой предпочтительный подход в этой ситуации?

1 Ответ

0 голосов
/ 06 июля 2018

Поправь меня, если я ошибаюсь.

  • Вы хотите отобразить все продукты, если @current_products пусто.
  • Если @current_products не пусто, то вы отображаете @current_products + все остальные продукты в базе данных, что опять же все продукты. Только порядок будет другим.

Подход 1

Если вы хотите, чтобы два набора продуктов были в отдельных переменных:

# Controller
@current_products = wherever_they_come_from
@new_products = ShopifyAPI::Product.where('id NOT IN (?)', @current_products.pluck(:product_id))

# View
<% @current_products.each do |product| %>
  <!-- Render product -->
<% end %>

<% @new_products.each do |product| %>
  <!-- Render product -->
<% end %>

Подход 2

Не рекомендуется, если @current_products и продукты из ShopifyAPI::Product не имеют одинаковых атрибутов для отображения

Если вы не хотите два набора продуктов в отдельных переменных:

# Controller
@current_products = wherever_they_come_from
@current_products |= ShopifyAPI::Product.where('id NOT IN (?)', @current_products.pluck(:product_id))

# View
<% @current_products.each do |product| %>
  <!-- Render product -->
<% end %>

Примечание: Я полагаю, что ShopifyAPI модели ведут себя аналогично ActiveRecord моделям с точки зрения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...