В моем приложении у меня есть страница, на которой публикуются статусы пользователей, за которыми я следую. Я новичок в рельсах, и эта ошибка меня убивает. могу дать еще что-нибудь, если нужно
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 мс)
Timeline
не наследуется отActiveRecord::Base
, поэтому метод.where
отсутствует. Думаю, вы хотите сделатьPost.where(...)
. - person Thomas Klemm   schedule 25.08.2014where
в вашей модели, заключается в том, что она не наследуется отActiveRecord::Base
. - person Pramod Solanky   schedule 25.08.2014