Не удается сохранить базу данных в консоли Rails?

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

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

#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 ответ


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

belongs_to :list

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

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

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

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

принадлежат: список: необязательный: true


Есть идеи?

10000