ruby - Why does `where` give an "undefined method" error in Rails? -


i'm trying feedbacks specific attribute. using code:

def index   feedbacks = feedback.all   if params[:tag]     @average_customer_rating = feedbacks.where('buyer_feedback_date not null').rated(feedback::from_buyers).average(:buyer_rating) || 0     @products = product.includes(:images).tagged_with(params[:tag]).order('desc').limit(22)   else     @products = product.includes(:images).all     @average_customer_rating = feedbacks.where('buyer_feedback_date not null').rated(feedback::from_buyers).average(:buyer_rating) || 0   end end 

and rails shows error:

undefined method `where' []:array 

why can't use where here , how fix it?

in rails 3.x, all returns array:

feedbacks = feedback.all  # <- array feedbacks.where(...)      # <- fails 

to activerecord::relation, have use scoped:

feedbacks = feedback.scoped  # <- activerecord::relation feedbacks.where(...)         # <- works 

see working scopes more examples.


note distinction not needed in rails 4 anymore – scoped deprecated in favor of all returns activerecord::relation.


Comments

Popular posts from this blog

javascript - Clear button on addentry page doesn't work -

c# - Selenium Authentication Popup preventing driver close or quit -

tensorflow when input_data MNIST_data , zlib.error: Error -3 while decompressing: invalid block type -