Получение ошибки при попытке отобразить сообщения пользователей, на которых я подписан

В моем приложении у меня есть страница, на которой публикуются статусы пользователей, за которыми я следую. Я новичок в рельсах, и эта ошибка меня убивает. могу дать еще что-нибудь, если нужно

pages_controller.rb

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

пользователь.rb

def hub
  Timeline.from_users_followed_by(self)
end

timeline.rb

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

А это след ошибки.

Начат GET "/" для 127.0.0.1 в 2014-08-24 14:11:28 -0700 Обработка PagesController#home как HTML Пользовательская загрузка (3,0 мс) ВЫБЕРИТЕ "пользователей".* ИЗ "пользователей" ГДЕ "пользователи". "идентификатор" = ? LIMIT 1 [["id", 4]] Завершено 500 Внутренняя ошибка сервера за 257 мс

NoMethodError (неопределенный метод «где» для временной шкалы: класс):

app/models/timeline.rb:47:in `from_users_followed_by'
app/models/user.rb:24:in `hub'
app/controllers/pages_controller.rb:5:in `home'

Визуализация C:/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.1.2/lib/action_dispatch/middleware/templates/rescues/_source.erb (4,0 мс) Визуализация C:/Ruby200/lib/ruby /gems/2.0.0/gems/actionpack-4.1.2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4,0 мс) Визуализация C:/Ruby200/lib/ruby/gems/2.0.0/ gems/actionpack-4.1.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (5,0 мс) Визуализация C:/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.1.2 /lib/action_dispatch/middleware/templates/rescues/diagnostics.erb в Rescues/layout (646,0 мс)


person teddybear    schedule 24.08.2014    source источник
comment
Похоже, что ваш класс Timeline не наследуется от ActiveRecord::Base, поэтому метод .where отсутствует. Думаю, вы хотите сделать Post.where(...).   -  person Thomas Klemm    schedule 25.08.2014
comment
Круто, помогло. Кроме того, если вы не возражаете, не могли бы вы рассказать мне, как вы к этому пришли? Я был бы очень признателен.   -  person teddybear    schedule 25.08.2014
comment
@ThomasKlemm прав. Единственная причина, по которой у вас нет where в вашей модели, заключается в том, что она не наследуется от ActiveRecord::Base.   -  person Pramod Solanky    schedule 25.08.2014


Ответы (2)


вы также можете использовать области действия с параметрами http://guides.rubyonrails.org/active_record_querying.html#passing-in-arguments

person cristi_razvi    schedule 05.06.2015

person    schedule
comment
Есть ли способ записать self.from_users_followed_by как не наследуемый от ActiveRecord? - person teddybear; 26.08.2014
comment
Могу ли я охватить идентификаторы отслеживаемых пользователей в моей пользовательской модели или объединить их вместе в моем методе концентратора? - person teddybear; 27.08.2014