Mongoid:belongs_to用户和has_one用户无法正常工作

时间:2014-10-09 18:54:51

标签: ruby-on-rails mongoid sidekiq

我有这种关系

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。

1 个答案:

答案 0 :(得分:0)

创建这种一对一关系的最简单方法是通过它所属的对象创建一个对象,就像这样......

@user.linkedin_information.create({})