Не удается сохранить базу данных в консоли Rails? - PullRequest
0 голосов
/ 18 мая 2019

После настройки своих ассоциаций я попытался протестировать их в консоли, но не могу сохранить их в БД. Я не знаю, почему это происходит!

Я успешно выполнил все миграции и перезагрузил консоль. Все еще не может сохраняться.

#Item.rb

class Item < ApplicationRecord
  belongs_to :list
end

#List.rb

class List < ApplicationRecord
  has_many :items
end

#Schema

create_table "items", force: :cascade do |t|
    t.string "description"
    t.integer "list_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

create_table "lists", force: :cascade do |t|
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

#Console output:
>> Item.create(:description => "Cookies")
 (0.1ms)  begin transaction
 (0.1ms)  rollback transaction
=> <Item id: nil, description: "Cookies", list_id: nil, created_at: nil, updated_at: nil>

>> cookies = Item.create(description: "Cookies")
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> #<Item id: nil, description: "Cookies", list_id: nil, created_at: nil, updated_at: nil>

>> i = Item.new
=> #<Item id: nil, description: nil, list_id: nil, created_at: nil, updated_at: nil>
>> i.save
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> false

1 Ответ

1 голос
/ 18 мая 2019

В вашем классе Item вы сделали:

belongs_to :list

Это означает, что требуется list.Вы не предоставляете список, поэтому сохранение не удается.Вы можете увидеть это, если выполните:

Item.create!(:description => "Cookies")

(с ударом, который вызовет ошибку) в консоли.

Если вы хотите, чтобы list был необязательным, вам нужно сделать:

assign_to: list, необязательно: true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...