ポートフォリオ作成中の初学者なのですがエラーが発生し躓いている状況なのでわかる方いましたらご教授お願いします。
#状況
articleモデルのテストを以下のように記述しテストを通そうとしましたがエラーが発生しました。
ですがどうコードを記述しなおせば良いか検索してもわからない状況です。
category_idを入れているのにもかかわらずカテゴリが入力されていないと認識されています。
#エラーログ
sdf-app % bundle exec rspec spec/models/article_spec.rb warning: parser/current is loading parser/ruby26, which recognizes warning: 2.6.6-compliant syntax, but you are running 2.6.5. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1. To continue case sensitive comparison on the :email attribute in User model, pass `case_sensitive: true` option explicitly to the uniqueness validator. (called from block (2 levels) in <top (required)> at /Users/imayoshikosuke/sdf-app/spec/models/article_spec.rb:23) /Users/imayoshikosuke/sdf-app/spec/factories/articles.rb:4: Passing `digits` with the 1st argument of `number` is deprecated. Use keyword argument like `number(digits: ...)` instead. To automatically update from positional arguments to keyword arguments, install rubocop-faker and run: rubocop \ --require rubocop-faker \ --only Faker/DeprecatedArguments \ --auto-correct F Failures: 1) Article 全ての項目が入力されている場合 記事一覧を保存できる Failure/Error: expect(article).to be_valid expected #<Article id: nil, user_id: 11, object: "e55pvzk0ni", price: 2759762496, store: "jycuh", content: "reuakjw8w54hvs5uagbo4ixn0cn8irkior7sz74uayxcjfp2dt", created_at: nil, updated_at: nil, rate: 1, category_id: 1> to be valid, but got errors: カテゴリを入力してください # ./spec/models/article_spec.rb:28:in `block (3 levels) in <top (required)>' Finished in 1.48 seconds (files took 6.55 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/models/article_spec.rb:27 # Article 全ての項目が入力されている場合 記事一覧を保存できる
各種記述ファイル
artice_spec.rb
require 'rails_helper' RSpec.describe 'Article', type: :model do let!(:user) { create(:user) } context '全ての項目が入力されている場合' do let!(:article) { build(:article, user: user) } it '記事を保存できる' do expect(article).to be_valid end end end
articles.rb Rspec
FactoryBot.define do factory :article do object { Faker::Lorem.characters(number: 10) } price { Faker::Number.number(1) } store { Faker::Lorem.characters(number: 5) } content { Faker::Lorem.characters(number: 50) } rate { 1 } category_id { 1 } end end
article.rb
class Article < ApplicationRecord belongs_to :category validates :category_id, presence: true end
category.rb
class Category < ApplicationRecord has_many :articles validates :category_name, presence: true end
schema.rb
create_table "articles", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t| t.bigint "user_id", null: false t.string "object", null: false t.integer "price", null: false t.string "store", null: false t.string "content", null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.integer "rate" t.integer "category_id", null: false t.index ["category_id"], name: "index_articles_on_category_id" t.index ["user_id"], name: "index_articles_on_user_id" end create_table "categories", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t| t.string "category_name", null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false end
#考えたこと
アソシエーション関連の記述が足りていないからなのかなとも思うのですがちょっとわからないのでわかる方ご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/27 01:07