возникли проблемы с зацикливанием и сохранением переменных с activerecord RUBY - PullRequest
0 голосов
/ 07 мая 2020

В настоящее время я работаю над проектом с моделью has_many_through. Моя объединенная таблица / класс называется "Потребление", а две соединенные модели - "Алкогольный напиток" и "Потребитель". Сейчас я работаю над командной строкой (я завершил миграции) и не понимаю, как добавлять записи в Consumer. Ранее я создал нового потребителя в командной строке.

def create_user
 new_user=Consumer.create(name: @name,sex: @sex, weight: @weight)
 puts "Welcome #{new_user.name}!"
end

Теперь я хочу иметь возможность добавлять каждый напиток (при условии, что он проверяется методом drink_valid?) В свой экземпляр Consumer. Я не уверен, как это сделать в созданном мною l oop. Я полагаю, что должен присоединиться к экземпляру Consumer to the Alcoholi c Beverage через Intake.create, но я не знаю, где именно воспроизвести этот экземпляр. Я хочу, чтобы у потребителя была возможность выбрать напиток (проверить его), а затем предоставить ему возможность выпить еще один напиток. Если они решат не использовать l oop, не нужно добавлять больше экземпляров. Если они решат выпивать снова и снова, этот экземпляр следует добавить в Consumer, чтобы я мог вызвать Consumer.alcoholic_beverages и получить список всех напитков, которые они выпили. Любая помощь будет оценена по достоинству, так как я очень смущен.

def display
  ingredients=RestClient.get("https://raw.githubusercontent.com/teijo/iba-cocktails/master/recipes.json")
  @ingredients_data=JSON.parse(ingredients)
  @ingredients_data.collect do |x,y|
   @cocktails = x["name"]
   puts @cocktails
  #  sleep(0.1)
 end
 sleep(0.1)
 puts "So, what's your poison?" "\n" 
end

def drink_valid?
  @chosen_cocktail=gets.chomp.titleize
  if AlcoholicBeverage.find_by(cocktail_name: @chosen_cocktail) 
      puts "Mhm good choice!"
  else
    until AlcoholicBeverage.find_by(cocktail_name: @chosen_cocktail)
      loop do
        puts "Sorry please choose something on the list!"
        @chosen_cocktail=gets.chomp.titleize
      break
  end 
end
# new_intake= Intake.create
  # new_user << new_intake
end
end


def details
  puts "Now that you've chosen your cocktail, I'll provide you with details on the necessary ingredients,glass and garnishes!"
    glass_type = AlcoholicBeverage.where(cocktail_name: @chosen_cocktail).map(&:glass)
    puts "Required : #{glass_type.join.titleize} glass."
    garnish = AlcoholicBeverage.where(cocktail_name: @chosen_cocktail).map(&:garnish)
     if garnish.join.titleize == ""
      puts "No garnish needed!"
     else
      puts "Required garnish: #{garnish.join.titleize}"
    end
    preparation = AlcoholicBeverage.where(cocktail_name: @chosen_cocktail).pluck("preparation")
     puts "To prepare : #{preparation.join}"
    loop do 
      ask
      break if @new_drink == "no" || "No"
     end
end

def ask
  puts "Would you like another drink (yes/no)?"
    new_drink=gets.chomp.strip.titleize
      if new_drink == "Yes" || new_drink == "yes"
         display
         drink_valid?
         details
      else
        puts "I'll give your blood alcohol content level based on the drink you've had."
      end
  end
...