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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

2446閲覧

[Rails]Twitterで収集した情報をActiverecordでDBに入れる方法

mmm

総合スコア22

Ruby

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

1クリップ

投稿2014/11/09 02:15

TwitterAPIでユーザーのタイムラインから画像URLを取得し、それをDBに入れる方法ではまっています。

やりたいこと
・ユーザーをテーブルUserに登録してなければ登録
・ユーザーに関連する画像を検索し、登録がなければテーブルPostに登録
・Userはhas_many post
・Postはbelongs_to user
・twitterからの情報取得はパッチのように利用したい。

下記のようにコードを書いたのですが、うまく動きません。
どこを修正すればよろしいでしょうか。

lang

1 require 'twitter' 2 require "active_record" 3limit = 100 # 取得するツイートの上限数 4target = "screan_name" # 画像URLを取得するユーザーの名前 5 6client = Twitter::REST::Client.new do |config| 7 config.consumer_key = "---------" 8 config.consumer_secret = "---------" 9 config.access_token = "---------" 10 config.access_token_secret = "---------" 11end 12 13#ユーザーが登録されていなかったら登録する。 14#screan_nameはnicknameに入れる。 15class User < ActiveRecord::Base 16 def create_user 17 user = User.find_or_create_by(nickname:screan_name ) 18 end 19end 20 21begin 22 # limitで指定された数だけツイートを取得 23 client.search(target, :locale => "ja", :result_type => "recent", :include_entity => true).take(limit).map do |tweet| 24 # entities内にメディア(画像等)を含む場合の処理 25 if tweet.media? then 26 tweet.media.each do |value| 27 image = value.media_url 28 end 29 end 30 end 31 32# 検索ワードでツイートを取得できなかった場合の例外処理 33rescue Twitter::Error::ClientError 34 puts "ツイートを取得できませんでした" 35 36# リクエストが多すぎる場合の例外処理 37rescue Twitter::Error::TooManyRequests => error 38 sleep error.rate_limit.reset_in 39 retry 40end 41 42#取得した画像URLをPostのpost_imageに入れる 43#ここがうまく動いていません。 44class Post < ActiveRecord::Base 45 def create_post 46 user = User.find_by(nickname: target) 47 image.each do |i| 48 i.post = User.post.find_or_create_by(post_image: image) 49 puts "成功しました" 50 end 51 end 52end 53 54 55

よろしくお願いします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Railsアプリのホームからrails consoleを立ち上げ

lang

1$ rails console

デバッグできます

lang

1image = "dummy.png" 2User.post.find_or_create_by(post_image: image)

上のように入力して、エラーが出ると思いますがどうでしょうか?

投稿2014/11/11 07:28

tmu

総合スコア277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmm

2014/11/16 15:17

ありがとうございます。 バリデーションが原因でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問