我有这种关系
class User
include Mongoid::Document
include Mongoid::Timestamps
has_one :linkedin_information, dependent: :destroy
class LinkedinInformation
belongs_to :user
field :summary, type String, default: ''
validates :user_id, presence: true
attr_accesible :summary
在Sidekiq worker中,使用@user:
的有效数据代码user_lin = LinkedinInformation.create!({
user: @user,
summary: data["summary"]
})
此工作程序抛出异常
问题: LinkedinInformation的验证失败。 摘要: 发现以下错误:用户不能为空
从LinkedinInformation类中删除验证后,worker将LinkedinInformation保存到集合linkedin_informations但没有user_id字段,也没有@user get linkedin_information_id字段。
我尝试在User集合中显式设置class_name,以防问题出现在LinkedinInformation类的名称中,但没有发生任何事情。
问题的一部分可以用下一个代码来解决:
user_lin: LinkedinInformation.new({
summary: data["summary"]
})
user_lin.user = @user
user_lin.save
然后我只能从user_lin获取用户,但我无法从@user访问user_lin。
答案 0 :(得分:0)
创建这种一对一关系的最简单方法是通过它所属的对象创建一个对象,就像这样......
@user.linkedin_information.create({})