最寄りのカフェを検索することのできるアプリを作成しています。
下記がアプリの仕様です。
######アプリの仕様
・アプリ内に登録しているカフェ情報に対して、ユーザーがレビューできるように設定しています。
・カフェ情報は「掲載申請・掲載許可・掲載禁止」の中からいずれかのデータを保持しており、「掲載許可」のデータのみユーザーからは表示できるようにしています。
また、下記がアプリのコード情報です。
######アプリのコード内容
schema
1create_table "reviews", force: :cascade do |t| 2 t.string "title" 3 t.string "body" 4 t.string "review_image_id" 5 t.integer "user_id" 6 t.integer "shop_id" 7 t.datetime "created_at", null: false 8 t.datetime "updated_at", null: false 9 t.float "rate", default: 0.0, null: false 10 end 11 12 create_table "shops", force: :cascade do |t| 13 t.string "name" 14 t.text "introduction" 15 t.string "address" 16 t.integer "genre_id" 17 t.time "start_business_hours" 18 t.string "station" 19 t.string "phone_number" 20 t.string "home_page" 21 t.string "holiday" 22 t.datetime "created_at", null: false 23 t.datetime "updated_at", null: false 24 t.time "finish_business_hours" 25 t.float "latitude" 26 t.float "longitude" 27 t.integer "is_active", default: 0
Topページにて、登録したユーザーのレビュー数を表示できるようにしたいのですが、どのように実装すれば良いのか分かりません。
手順としては、
「ReviewモデルとアソシエーションしているShopモデルから、「is_active」カラムが「1」(掲載許可)のものを取得する」
だと思うのですが、下記コード(controller)を記述するとエラーが発生してしまいます。
top
1<div class="col-md-4 text-center"> 2 <span class="fh5co-counter js-counter" data-from="0" data-to="<%= @review.count %>" data-speed="5000" data-refresh-interval="50"></span> 3 <span class="fh5co-counter-label">登録レビュー数</span> 4</div>
controller
1@reviews = Review.all.select(:shop_id) 2@review = @reviews.where(is_active: 1)
error
1ActiveRecord::StatementInvalid in User::Users#top 2Showing /home/ec2-user/environment/CafeWhere2/app/views/user/users/top.html.erb where line #296 raised: 3 4SQLite3::SQLException: no such column: reviews.is_active: SELECT COUNT("reviews"."shop_id") FROM "reviews" WHERE "reviews"."is_active" = ?
エラーを発生させずに、Topページにて登録したユーザーのレビュー数を表示できるようにするには、どのように記述すればよいのでしょうか。
何卒、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー