我有一個讓用戶或訪客撰寫評論的系統。如果用戶撰寫評論,則會與其user_id關聯。如果客人撰寫評論,則會要求他們提供一個用戶名,該用戶名存儲在評論數據庫中名爲「guest」的列中。教授控制器中未定義的方法
我不完全知道如何做到這一點,但我所用professor_controller做的是:
def show
@review = Review.where(professor_id: @professor.id).order("created_at DESC")
@avg_review = @review.average(:hw)
if @review.user_id = !nil
@user = User.where(id: @review.user_id)
else
@user = @review.guest
end
render
end
然而,這會產生一個錯誤:
NoMethodError in ProfessorsController#show
undefined method `user_id=' for #<Review::ActiveRecord_Relation:0x007fed19228e28>
我得到這個錯誤甚至在我把if語句中我有同樣的問題,當我的控制器看起來像:
def show
@review = Review.where(professor_id: @professor.id).order("created_at DESC")
@avg_review = @review.average(:hw)
@user = User.where(id: @review.user_id)
end
@re視圖工作正常,所以@avg_review。評論表有一個user_id列,Users表有一個ID列。
'@review.user_id =!nil' - 您不是指'@review.user_id!= nil'? –