0

这可能很容易,但我不确定这是否是在 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命令时,它只显示单行,我期待从最初的 2 个开始,id 为 nil。

因此,在创建对象时创建的初始空白行在第二个命令在 db 上运行后会破坏,或者是其他东西。

rails/ruby 中的 nil 值是指NULL? (因为这是我从 Todo.new [ id:nil todo_item:nil ...] 得到的)

4

2 回答 2

1

t.save持久t化到数据库中,并被id填充。假设您使用 ActiveRecord,该id字段是一个自动字段并且是自动递增的。如果您有Todo一个nil值为 的id,则表明该对象尚未持久化。

于 2013-02-07T17:47:20.677 回答
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
于 2013-02-07T17:47:43.743 回答