質問

私はRailsの開発に新たなんだと私はまた、MongoDBのを始めてます。

私は、次のされています。この Railscast のチュートリアルと複雑なフォームについてRailsは私は私のデータベースとしてのMongoDBを使用しています。私はそれのチャイルズで文書を挿入し、編集フォームにデータを取り出す問題のないんだけど、私はそれを更新しようとすると、私は

このエラーを取得します
  

偽のための未定義のメソッド `assert_valid_keys':FalseClassの

これは私のエンティティクラスである

class Project 
  include MongoMapper::Document

  key :name, String, :required => true
  key :priority, Integer

  many :tasks
  after_update :save_tasks

  def task_attributes=(task_attributes)
    task_attributes.each do |attributes|
    if attributes[:id].blank?
      tasks.build(attributes)
    else
      task = tasks.detect { |t| t.id.to_s == attributes[:id].to_s }  
      task.attributes = attributes
    end
  end    
end

def save_tasks
tasks.each do |t|
  if t.should_destroy?
    t.destroy
  else
    t.save(:validate => false)
  end
end

終了     終了

class Task 
include MongoMapper::EmbeddedDocument

key :project_id, ObjectId
key :name, String
key :description, String
key :completed, Boolean

belongs_to :project
attr_accessor :should_destroy

def should_destroy?
  should_destroy.to_i == 1
end 
end

んの誰もがここで起こっていただきました!を知っていますか?おかげ

役に立ちましたか?

解決 2

EmbeddedDocumentからドキュメントへのタスクのエンティティを変更、および削除 validates_associated:プロジェクトのタスクは、それが今、更新作業追加しています プロジェクトの更新からタスクを削除ます。

助けをx1a4とジョンNunemakerのおかげでたくさんの:-)

他のヒント

のようなあなたのTaskクラスを見て何?それはEmbeddedDocumentを使用していますか?そうでない場合、あなたはそれでPROJECT_IDのキーを宣言したのですか?

アップデート - 。それはsave(false)を行い、save(:validate => false)によるだとあなたが設定する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top