我可以在ActiveRecord上工作吗?

时间:2014-08-26 01:00:53

标签: ruby ruby-on-rails-4 twitter twitter-oauth

尝试通过使用omniauth-twitter和twitter宝石重新创建Twitter来处理oAuth,我一直在一个地方查看我在我的应用程序中关注的所有用户的推文。我可以查看自己的推文和其他用户'在自己的个人资料中。

这是错误跟踪

  

PagesController #home

中的NoMethodError      

未定义的方法`其中'对于Twitter ::时间线:类

     

app / models / twitter / timeline.rb:47:in`from_users_followed_by'

     

app / models / user.rb:24:在'hub'

     

app / controllers / pages_controller.rb:5:在'home'

pages_controller.rb

def home
  if signed_in?
    @hub_items = current_user.hub.paginate(page: params[:page])
  end
end

user.rb

def hub
  Twitter::Timeline.from_users_followed_by(self)
end

timeline.rb

module Twitter
 class Timeline
  def self.from_users_followed_by(user)
    followed_user_ids = "SELECT followed_id FROM relationships
                        WHERE follower_id = :user_id"
    Twitter::Timeline.where("user_id IN (#{followed_user_ids}) OR user_id = :user_id",
                            user_id: user.id)
end
end
end

**控制器

hub_controller.rb

def show
  @hub_items = []
  render 'pages/home'
end

**观看次数

_hub.html.erb

<% if @hub_items.any? %>
  <ol class="microposts">
    <%= render partial: 'shared/hub_item', collection: @hub_items %>
  </ol>
  <%= will_paginate @hub_items %>
<% end %>

_hub_items.html.erb

<li id="<%= hub_item.id %>">
  <% if @hub_item.any? %>
  <% @hub_item.each do |post| %>
    <% if post.provider == "twitter" %>
      <%= render partial: "users/twitter_post", locals: {post: post} %>
  <% end %>
</li>

那么,有没有办法编写我的self.from_users_followed_by方法,以便不必从ActiveRecord :: Base继承?我可以提供其他任何内容。需要弄清楚这一点。

0 个答案:

没有答案