Я пытаюсь выполнить базовый тест rspec, который выглядит следующим образом:Тест Rspec получил: nil
require 'rails_helper'
describe ReviewsController do
describe "GET #index" do
it "assigns a new review to @reviews" do
review = Review.create(rating: 4)
get :index
expect(assigns(:review)).to eq([review])
assert_response :success
end
end
end
Но я получаю отказ: ожидаемое отзыв ID: 8, Рейтинг: 4, created_at: "2016-07-19 11:58:28", updated_at: «2016-07-19 11 : 58: 28" , user_id: ноль, game_id: ноль получил: ноль
Мой ReviewsController выглядит следующим образом:
class ReviewsController < ApplicationController
def index
@reviews = Review.all
end
def show
@review = Review.find(params[:rating])
end
def create
review = Review.new(review_params)
respond_to do |format|
if @review.save
format.html { redirect_to root_url, notice: 'Review was successfully updated.' }
format.json { render :show, status: :ok, location: @review }
else
format.html { render :new }
format.json { render json: @review.errors, status: :unprocessable_entity }
end
end
end
private
def post_params
params.require(:post).permit(:message)
end
end
В случае, если вам это нужно, вот обзор модели:
class Review < ActiveRecord::Base
belongs_to :user
belongs_to :game
validates_presence_of :rating
validates_uniqueness_of :user_id
end
Я не понимаю, почему это просить user_id или game_id, потому что это только отзывы ..
Вы получаете это сообщение об ошибке из-за ассоциации в ваших моделях. Обзор принадлежит Game and User и поэтому при создании Review должен быть присвоен игровой и пользовательский идентификатор. – Ren