创建对象时在rails中创建表行

时间:2013-02-07 17:42:46

标签: ruby-on-rails ruby database sqlite

这可能很容易,但我不确定这是在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 ...])

2 个答案:

答案 0 :(得分:1)

t.savet保留在数据库中,并填充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