2

Rails開発は初めてで、MongoDBも始めています。

Rails を使用した複雑なフォームに関するこのRailscastチュートリアルに従っていますが、データベースとして MongoDB を使用しています。子を持つドキュメントを挿入し、編集フォームにデータを取得するのに問題はありませんが、更新しようとするとこのエラーが発生します

false:FalseClass の未定義メソッド `assert_valid_keys'

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

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

ここで何が起こっているか知っている人はいますか?ありがとう

4

2 に答える 2

2

Task クラスはどのように見えますか? EmbeddedDocument を使用していますか? そうでない場合、その中で project_id のキーを宣言しましたか?

更新 - これはsave(false), doによるものであり、save(:validate => false)設定する必要があります。

于 2010-05-14T03:57:26.480 に答える
0

TaskエンティティをEmbeddedDocumentからDocumentに変更し、validates_associated:タスクをProjectから削除しました。現在、プロジェクトの更新、追加、およびプロジェクトの更新からのタスクの削除が機能しています。

x1a4とJohnNunemakerの助けに感謝します:-)

于 2010-05-20T16:40:01.577 に答える