Rails и MongoDB с MongoMapper - PullRequest
2 голосов
/ 14 мая 2010

Я новичок в разработке на Rails и также начинаю с MongoDB.

Я следовал этому Railscast учебнику о сложных формах с Rails, но я использую MongoDB в качестве базы данных У меня нет проблем при вставке документов с дочерними элементами и получении данных в форму редактирования, но когда я пытаюсь обновить их, я получаю эту ошибку

неопределенный метод `assert_valid_keys 'для false: 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 ]

2 голосов
/ 14 мая 2010

Как выглядит ваш класс Task? Использует ли он EmbeddedDocument? Если нет, то объявили ли вы в нем ключ для project_id?

обновление - это из-за save(false), сделайте save(:validate => false), и вы должны быть установлены.

0 голосов
/ 20 мая 2010

Изменил сущность Задача с EmbeddedDocument на Документ и удалил validates_associated: задача из Project, теперь она работает, обновляя, добавляя и удаление задач из обновления проекта.

Большое спасибо x1a4 и Джону Nunemaker за помощь :-)

...