Ruby on rails 无法持久化到Rails控制台中的数据库?
在设置了关联之后,我尝试在控制台中测试它们,但是我无法将它们持久化到DB。我不知道为什么会发生这种事 我已经成功运行了所有迁移并重新加载了控制台。仍然无法坚持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
#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完美!谢谢你的帮助!很高兴这有帮助。请随时投票并接受(以帮助未来的搜索者)。