Mendapatkan kesalahan saat saya mencoba merender postingan pengguna yang saya ikuti

Di aplikasi saya, saya memiliki halaman yang memposting status pengguna yang saya ikuti. Saya baru mengenal Rails dan kesalahan ini membunuh saya. Saya bisa memberikan apa pun jika diperlukan

halaman_controller.rb

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

pengguna.rb

def hub
  Timeline.from_users_followed_by(self)
end

garis waktu.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

Dan inilah jejak kesalahannya.

Memulai GET "/" untuk 127.0.0.1 pada 24-08-2014 14:11:28 -0700 Diproses oleh PagesController#home sebagai Pengguna HTML Muat (3,0 md) PILIH "pengguna".* DARI "pengguna" DI MANA "pengguna". "id" = ? LIMIT 1 [["id", 4]] Menyelesaikan 500 Kesalahan Server Internal dalam 257 md

NoMethodError (metode `di mana' yang tidak ditentukan untuk Timeline:Class):

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'

Dirender C:/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.1.2/lib/action_dispatch/middleware/templates/rescues/_source.erb (4.0ms) Dirender C:/Ruby200/lib/ruby /gems/2.0.0/gems/actionpack-4.1.2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4.0ms) Dirender 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.0ms) Dirender C:/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.1.2 /lib/action_dispatch/middleware/templates/rescues/diagnostics.erb dalam penyelamatan/tata letak (646.0ms)


person teddybear    schedule 24.08.2014    source sumber
comment
Sepertinya kelas Timeline Anda tidak mewarisi dari ActiveRecord::Base, jadi metode .where tidak ada. Sepertinya Anda ingin melakukan Post.where(...).   -  person Thomas Klemm    schedule 25.08.2014
comment
Luar biasa, itu membantu. Selain itu, jika Anda tidak keberatan, dapatkah Anda memberi tahu saya bagaimana Anda bisa sampai pada hal tersebut? Saya akan sangat menghargainya.   -  person teddybear    schedule 25.08.2014
comment
@ThomasKlemm benar. Satu-satunya alasan Anda tidak memiliki where pada model Anda adalah karena model tersebut tidak mewarisi dari ActiveRecord::Base   -  person Pramod Solanky    schedule 25.08.2014


Jawaban (2)


Anda juga dapat menggunakan cakupan dengan params http://guides.rubyonrails.org/active_record_querying.html#passing-in-arguments

person cristi_razvi    schedule 05.06.2015

person    schedule
comment
Apakah ada cara agar self.from_users_followed_by ditulis agar tidak mewarisi dari ActiveRecord? - person teddybear; 26.08.2014
comment
Bisakah saya mencakup id pengguna yang diikuti dalam model pengguna saya atau menggabungkan mereka bersama-sama dalam metode hub saya? - person teddybear; 27.08.2014