Carriles y MongoDB con MongoMapper
-
26-09-2019 - |
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
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