Как сохранить данные API в класс ActiveRecord и отобразить их в командной строке? - PullRequest
0 голосов
/ 06 мая 2020

Я создаю проект и решил получить данные из API в Интернете. У меня есть 3 модели :coholic_beverage, потребитель и потребление (которая является таблицей соединения для отношений многих ко многим между alc_beverage и потребителем). Один атрибут моего алкогольного напитка - cocktail_name, который извлекается через итерацию моего API. Как я могу извлечь эти данные и затем отобразить их в моем файле запуска (для выполнения методов командной строки). Мне нужен такой метод, как display_cocktail_menu, который берет названия коктейлей из API и перечисляет их для чтения потребителем. Мой класс AlcoholicBeverage выглядит так (я тоже создал миграцию):

class AlcoholicBeverage < ActiveRecord::Base
    has_many :intakes
    has_many :consumers, through: :intakes
end

У меня есть исходный файл rake, в который я загружал и повторял через API, поэтому я могу все проверить ... но Я не знаю, как на самом деле хранить эти данные. Я новичок ie, так что любые указатели помогут. Я изменяю свой класс AlcBeverage, как указано ниже, который представляет то, что я сделал в моем файле seed.rb (и работал при попытке получить AlcoholicBeverage.all), но при реализации этого здесь продолжал получать неинициализированную постоянную ошибку (NameError):

require 'pry'
require 'rest-client'
require 'json'

class AlcoholicBeverage < ActiveRecord::Base
    has_many :intakes
    has_many :consumers, through: :intakes

    ingredients=RestClient.get("https://raw.githubusercontent.com/teijo/iba-cocktails/master/recipes.json")
    @ingredients_data=JSON.parse(ingredients)

    def self.all
        @ingredients_data.collect do |x,y|
            AlcoholicBeverage.create(cocktail_name: x["name"])
        end
    end

end

Я знаю, что метод self.all тоже неверен, но я не уверен, как go хранить имена cocktail_names (хотя моя итерация точно верна). Это мой rakefile:

require_relative 'config/environment'
require 'sinatra/activerecord/rake'

desc 'starts a console'
task :console do
  ActiveRecord::Base.logger = Logger.new(STDOUT)
  Pry.start
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...