我是Rails开发的新手,我也从MongoDB开始。
我一直在关注这个关于rails复杂表单的Railscast教程,但是我使用mongodb作为我的数据库。我可以用它的子代插入文档并将数据检索到编辑表单中,但是当我尝试更新它时,会出现此错误
false的未定义方法“assert\u valid\u keys”:false类
这是我的实体类
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
有人知道这里发生了什么吗?谢谢
最佳答案
你的任务班是什么样子的?是否使用embeddeddocument?如果没有,您是否在其中声明了项目id的密钥?
更新-这是由于save(false)
,dosave(:validate => false)
和您应该设置。
关于ruby-on-rails - 使用MongoMapper的Rails和MongoDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2831644/