Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法持久化到Rails控制台中的数据库?_Ruby On Rails_Database_Activerecord_Associations - Fatal编程技术网

Ruby on rails 无法持久化到Rails控制台中的数据库?

Ruby on rails 无法持久化到Rails控制台中的数据库?,ruby-on-rails,database,activerecord,associations,Ruby On Rails,Database,Activerecord,Associations,在设置了关联之后,我尝试在控制台中测试它们,但是我无法将它们持久化到DB。我不知道为什么会发生这种事 我已经成功运行了所有迁移并重新加载了控制台。仍然无法坚持 #Item.rb class Item < ApplicationRecord belongs_to :list end #List.rb class List < ApplicationRecord has_many :items end #Schema create_table "items", forc

在设置了关联之后,我尝试在控制台中测试它们,但是我无法将它们持久化到DB。我不知道为什么会发生这种事

我已经成功运行了所有迁移并重新加载了控制台。仍然无法坚持

#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
#Item.rb
类项<应用程序记录
属于:列表
终止
#List.rb
类列表<应用程序记录
你有很多东西吗
终止
#模式
创建表格“项目”,强制::级联do | t|
t、 字符串“说明”
t、 整数“列表id”
t、 datetime“created_at”,null:false
t、 datetime“更新时间”,null:false
终止
创建表格“列表”,force::cascade do | t|
t、 字符串“name”
t、 datetime“created_at”,null:false
t、 datetime“更新时间”,null:false
终止
#控制台输出:
>>创建(:description=>“Cookies”)
(0.1ms)开始事务处理
(0.1ms)回滚事务
=> 
>>cookies=项目。创建(描述:“cookies”)
(0.1ms)开始事务处理
(0.1ms)回滚事务
=> #
>>i=项。新
=> #
>>拯救
(0.1ms)开始事务处理
(0.1ms)回滚事务
=>错误

在您的
项目
课程中,您已经完成了:

belongs_to :list
这意味着需要
列表
。您没有提供列表,因此保存失败。如果执行以下操作,您可以看到:

Item.create!(:description => "Cookies")
(砰的一声,这将导致抛出错误)在控制台中

如果希望
list
是可选的,则需要执行以下操作:


属于:列表,可选:true

完美!谢谢你的帮助!很高兴这有帮助。请随时投票并接受(以帮助未来的搜索者)。