这可能很容易,但我不确定这是在rails中的初学者级别。
通过教程学习rails模型我发现了这个 -
Use t = Todo.new to create an empty row in the Todo table and stores it in t
在此之后我运行以下命令 -
> t.todo_item = "Assignment 1"
=> "Assignment 1"
和t.save
成功保存数据。到目前为止,我对此感到满意,但是当我执行Todo.all
命令时它只显示单行时,我期望从id为nil的初始值为2。
因此,在db上运行第二个命令后,对象创建时创建的初始空行会消失,或者是其他内容。
rails / ruby中的nil值是否指向NULL
?
(因为这是我从Todo.new获得的[id:nil todo_item:nil ...])
答案 0 :(得分:1)
t.save
将t
保留在数据库中,并填充id
。假设您正在使用ActiveRecord,id
字段是一个自动字段并自动递增。如果Todo
nil
的{{1}}值为id
,则表示该对象尚未保留。
答案 1 :(得分:1)
调用t=Todo.new
时,对象不会保存到数据库中。它只是在内存中创建一个对象。
调用t.save
将记录写入数据库。
你应该能够保持理智:
n = Todo.all.size # size of table before changes
t = Todo.new # create new object
t.todo_item = "Assignment 1"
t.save # save it to db
Todo.all.size==n+1 # should return true