【发布时间】:2011-09-03 02:21:04
【问题描述】:
我可以使用 Mongoid 读取我的数据库,但无法写入。
以下示例成功输出了活动的设备类型,但它在保存方法上崩溃并显示以下错误消息:“undefined method `name' for nil:NilClass”
活动 = Activity.find('4d89568d4f21557eb10003fc') 将活动.deviceType activity.description = '我的描述' 活动.保存这是我的类定义:
类用户 包括 Mongoid::Document 字段:名称,:类型=>字符串 字段:标识符,:类型=>字符串 字段 :email, :type => 字符串 referenced_in :活动 结尾 类跟踪点 包括 Mongoid::Document 字段 :when, :type => DateTime 字段:纬度,:类型=>浮点 字段 :longitude, :type => Float 字段:距离,:类型 => 浮点数 字段 :altitude, :type => Float 字段 :heartRate, :type => 整数 Embedded_in :activity, :inverse_of => :trackpoint 结尾 班级活动 包括 Mongoid::Document 字段 :startTime, :type => DateTime 字段:描述,:类型=>字符串 场:运动,:类型=>字符串 字段 :deviceType, :type => 字符串 字段 :deviceId, :type => 字符串 字段 :deviceActivityId, :type => 字符串 字段 :isPublic, :type => 布尔值 字段 :user_id, :type => 字符串 embeds_many :trackpoints 参考资料:用户 结尾感谢您的帮助...
【问题讨论】:
-
我刚刚发现,如果我创建一个全新的 Activity,它就可以工作......当我更新现有的 Activity 时会出现问题,就像上面的示例一样。
-
看来你应该在Trackpoint中输入“embedded_in :activity, :inverse_of => :trackpoints”而不是“embedded_in :activity, :inverse_of => :trackpoint”。
-
Activity 模型中不需要字段 :user_id, :type => 字符串,应将 Activity 中的“references_one :user”替换为“referenced_id :user”,并将“referenced_in :activity”替换为“references_one” :activity" 在用户模型中。
-
谢谢 Hck,我的问题实际上是在字段定义中