2016-09-27 4 views
0

Twitter gemを使用して特定のつぶやきを取得し、データベースに保存します。私はnilの値を扱いたいと思いますし、この目的のためにunless item.blank?を使います。ここに私のコードは次のとおりです。Rails - モデル内のNil値を処理する

def self.get_tweets user 
all_tweets = CLIENT.user_timeline(user, count: "20", exclude_replies: true, include_rts: false) 
good_tweets = all_tweets.select{ |t| t.retweet_count + t.favorite_count > 0} 
good_tweets.each do |tweet| 
    Twit.find_or_create_by(link: "#{tweet.uri}") do |twit| 
    twit.content = tweet.text unless tweet.text.blank? 
    twit.like = tweet.favorite_count 
    twit.retweet = tweet.retweet_count 
    twit.first_date = tweet.created_at 
    twit.engagement = twit.like + twit.retweet 
    twit.image_url = tweet.media[0].media_url unless tweet.media[0].media_url.blank? 
    twit.content_url = tweet.urls[0].expanded_url.to_s.split("?")[0] unless tweet.urls[0].blank? 
    end 
end 
end 

しかし、私はそれは私が私が欲しいものではありませんどの値として私はlocalhostのURL http://localhost:3000/twitsを得た私のコ​​ードは、最初の広告をクラッシュとして、私は私のページを更新していたときに続行するには良い方法ではありません理解して。

どうすればこのエラーをうまく処理できますか? Ruby/Railsを自分で1ヶ月学習していますので、あまり明確ではありません。ありがとうございました。

+0

「このエラーをうまく処理するにはどうすればよいですか? "エラーのテキストを含めるのを怠る。 – MarsAtomic

+0

@MarsAtomic、エラーは、次の"未定義メソッド 'media_url 'for nil:NilClass"です。私のスクリプトは失敗します...例えば、内部にimage_url、text、またはlinkがないのに、つぶやきを適切に保存する必要があります。 – Eric

答えて

1

あなたがいないメディアとつぶやき用MEDIA_URLを取得しようとしているため、エラーが発生した:

twit.image_url = tweet.media[0].media_url unless tweet.media[0].media_url.blank? 

ので、あなたは

twit.image_url = tweet.media[0].media_url unless tweet.media[0].blank? || tweet.media[0].media_url.blank? 

を使用することができ、私は反対の論理に

を好むだろう
twit.image_url = tweet.media[0].media_url if tweet.media[0].present? 

さらには

twit.image_url = tweet.media[0].try(:media_url) 
関連する問題