質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Ruby

    9425questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    8850questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • RubyGems

    375questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

delayed_jobを使うことができない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 368

NishidaRyu416_

score 83

非同期処理を実行

エラー

code

#controller


def quizlet
    @response=[]
    response = Unirest.get "https://api.quizlet.com/2.0/search/sets/?client_id=7JH38T27zM&whitespace=1",
                           parameters:{ whitespace: true,q: "Duo3.0",term:100,sort:"most_studied"}
    res=response.body

    quizlet_ids=[]
    res["sets"].each do|res|
      quizlet_ids<<res["id"]
    end


    quizlet_words = Unirest.get "https://api.quizlet.com/2.0/sets/?client_id=7JH38T27zM&whitespace=1",
                                parameters:{ whitespace: true,set_ids:"#{quizlet_ids}"}

    quizlet_words.body.each do|words|
      words["terms"].each do|word|
        response=word
        response["quizlet_id"]=words["id"]
        response["check_id"]=word["id"]
        response["question_language"]= words["lang_terms"]
        response["answer_language"]  = words["lang_definitions"]
        @response<<response
        @response.each do|response|
          response
          response.delay.quizlet_save(response["quizlet_id"],response["check_id"],response["term"],response["definition"],response["question_language"],response["answer_language"])
          response.delay.quizlet_create_groups(response["quizlet_id"],response["check_id"])
        end
      end
    end
  end
#model

def quizlet_save(quizlet_id,check_id,question,answer,question_language,answer_language)
    unless Word.find_by(check_id:check_id)&&Word.find_by(quizlet_id:quizlet_id)
      Word.create(quizlet_id:quizlet_id,check_id:check_id,title:"Quizlet",question:question,answer:answer,user_id:1,tag_list:"English,duo3.0,Vocabulary",
                  question_language:question_language,answer_language:answer_language)
    end
  end

  def quizlet_create_groups(quizlet_id,check_id)
    word=Word.find_by(check_id:check_id)
    unless word == nil
      checking_word=Word.find_by(quizlet_id:quizlet_id)
      group=Group.find_by(id: checking_word.group_id)
      if group==nil
        created_group=Group.new(user_id:1,title:"Quizlet",explanation:"Quizlet Duo3.0")
        created_group=created_group.save(validate: false)&&created_group
        word.update_attribute(:group_id,created_group.id)
      else
        word.update_attribute(:group_id,group.id)
      end
    end
  end
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • Ruby

    9425questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    8850questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • RubyGems

    375questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。