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.all1行しか表示されないため、最初からidnilの2つを期待していました。

つまり、オブジェクトの作成中に作成された最初の空白行は、dbで2番目のコマンドを実行した後に破棄されるか、それとも別のものです。

rails / ruby​​のnil値は?を参照していNULLますか?(これは私がTodo.new [id:nil todo_item:nil ...]から得たものなので)

4

2 に答える 2

1

t.saveデータベースtに保持され、データidが入力されます。ActiveRecordを使用しているとすると、idフィールドは自動フィールドであり、自動インクリメントされます。の値を持つaTodoがある場合、それはオブジェクトが永続化されていないことを示します。nilid

于 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 に答える