2011-07-27 2 views
1

私はプロジェクトに管理ページを持っており、フィールドの大きなセクションの名前を変更することにしました。そこで、モデルを変更して変更を反映させ、新しいフィールドをコマンドラインで古いフィールドと同じに設定しようとしました。私はそれを行う方法を理解できませんでしたので、私は基本的に私の管理ページに新しいフィールドを追加し、手動で値を設定しました(私が知っているハックシ)。Mongoidは値がデフォルトと異なるフィールドを挿入するだけです

それでは、新しいフィールドの2を言われてみましょう:

field :foo, default: 0 
field :bar, default: 9 

すべてが正常に動作するように見えたと私は管理者にfooとバーを設定すると、その値が保存されました。しかし、私はそれらが実際に私のdbに保存されていないかのように、それらの値に対して照会することができなかったことに気づいた。だから、私はMongoHubを見ましたが、実際にそこにはいませんでした。だから私はちょっとグーグルをして、更新を保存する必要があるのを見た。

ので、アップデートのコードは今のようになります。

if @stat_definition.update_attributes(params[:stat_definition]) 
    @stat_definition.save 
    [other stuff] 

そして今、そのデフォルト以外に設定されている任意のフィールドが保存されてきているが、そのデフォルトのままにされている任意のフィールドではありません。これらのデフォルト値を保存するにはどうすればよいですか?

そして、fooをフィールドold_fooに設定し、barをold_barの値に設定する方法は何ですか?

答えて

0

私は、デフォルト値を設定するために、このようないくつかのクエリを実行する必要があるように見えます:

t.update({ x : { $exists : false } }, { $set : { x : 77 } }, false, true 
+0

それがその後、新しいレコードで再びトリミングうとして、実際に問題を解決していません。 – Tigraine

関連する問題