Pregunta

Soy nuevo en el desarrollo de los carriles y estoy empezando con MongoDB también.

He estado siguiendo este Railscast tutorial sobre formas complejas con rieles, pero estoy usando MongoDB como mi base de datos. No estoy teniendo ningún problemas para insertar documentos con él de niño y la recuperación de los datos para el formulario de edición, pero cuando trato de actualizarlo me sale este error

  

método no definido `assert_valid_keys' para falso: FalseClass

Este es mi clase de la entidad

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

end     final

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

¿Alguien sabe qué está sucediendo aquí? Gracias

¿Fue útil?

Solución 2

Changed la entidad Tarea de EmbeddedDocument al documento, y se elimina la validates_associated: tarea de proyecto, que está ahora puesta al día de trabajo, añadir y la supresión de las tareas de actualización de un proyecto.

Muchas gracias a x1a4 y John Nunemaker por la ayuda :-)

Otros consejos

¿Qué hace su mirada clase de tareas como? ¿Utiliza EmbeddedDocument? Si no es así, ¿se declara una clave para project_id en ella?

Actualización -. Que es debido a la save(false), hacer save(:validate => false) y que debe ser conjunto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top