Twitter API 中使用 object.entities 时出现私有方法错误

4

当我尝试在我的Twitter Feed控制器中调用tweet.entities时,出现了以下错误:

private method `entities' called for #Twitter::Status:0x94d4bf4

在我的代码中没有任何名为entities的方法,我甚至进行了全文搜索以检查。

我需要重命名对象中的entities部分或者找到所谓的私有方法在哪里,或者绕过它。我的twitter_feeds控制器中的方法如下:

  def hometimeline
@user = User.find(current_user.id)

tweets = @user.tweeting.user_timeline(count: '10', include_entities: true)


parsed_tweets = []
i = 0

tweets.each do |tweet| 

  more = Hash.new
  more['test'] = tweet
  internal_hash = Hash.new
  mappings = {"source" => "fixed"}

  another = more['test']

  boo = Array(tweet)


  #newhash = Hash[twee.map {|k, v| [mapping[k], v] }]
  #newhash = Hash[more.map {|k, v| [mappings[k], v] }]
  #newhash = Hash[tweet.map {|k, v| [mappings[k] || k, v] }]

  internal_hash['parsed_text'] = tweet.entities

  internal_hash['id'] = tweet.id
  internal_hash['raw_text'] = tweet.text

  internal_hash['name'] = tweet.user.name
  internal_hash['screen_name'] = tweet.user.screen_name
  internal_hash['user_id'] = tweet.user.id
  internal_hash['user_image_url'] = tweet.user.profile_image_url
  parsed_tweets << internal_hash
  i = i + 1
end

respond_to do |format|
  format.json { render json: parsed_tweets }
end

基本上我正在将一组解析的推文发送给客户端,并希望在服务器上实现链接包装等功能。

有没有办法找出代码认为这种方法在哪里,或者有没有办法使它不是私有的,或者忽略它,以便我可以调用tweet.entities。

编辑:另一个需要注意的要点是我曾经拥有一个实体模型和实体控制器,但已将它们删除,仍然会出现这种情况。

谢谢

1个回答

6
原来这个错误是由Twitter gem引起的,他们有一些方法可以调用实体对象,如tweet.urls,tweet.user_mentions等,而不是我原本想到的tweet.entities.user_mentions。
文档在这里:http://rdoc.info/gems/twitter/Twitter/Tweet

1
谢谢你。这真是让我抓狂了。我希望他们只提供tweet.entities。 - bergie3000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接