0

Railsコンソールを介してアクセスしている数千の「チケット」ドキュメントを含むmongoデータベースがあります。これらのドキュメントのすべてではありませんが、コンソールから次のコマンドを実行すると、予期しない結果が発生します。フィールドの値が更新されません。Rails 1.9.3-p194、mongo 2.0.4

Ticket.where("title" => /failing example/).first.status
=> "Assigned"
Ticket.where("title" => /failing example/).first.status='Completed' 
=> "Completed" 
Ticket.where("title" => /failing example/).first.status
"Assigned" 

は?OK、別の方法で試してみましょう。

Ticket.where("title" => /failing example/).first do |t|
    t.status='Completed'
    t.save
 end
 "Completed"
 Ticket.where("title" => /failing example/).first.status
 "Assigned"

これは私を混乱させました。

4

1 に答える 1

1

同じチケットを使用していることがわかるように、代わりに次のことを試してください。

@ticket = Ticket.where("title" => /failing example/).first
@ticket.status
=> "Assigned"
@ticket.status = 'Completed'
=> "Completed"
@ticket.status
=> ...

さて、あなたの試みた編集から私の答えまで、オブジェクトは検証に合格しておらず、正しく保存されていないようです。モデルの検証Ticketを再確認し、必要なすべての列が存在することを確認してください。

于 2013-03-26T00:32:37.653 に答える