Ruby on rails Rails first_或_初始化不';我不能及时设置id吗?
我在初始化新用户时有非常奇怪的行为 我运行类似于Ruby on rails Rails first_或_初始化不';我不能及时设置id吗?,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,我在初始化新用户时有非常奇怪的行为 我运行类似于@user=user.where(:provider=>@provider,:uid=>@shop[:uid])的代码。首先\u或\u初始化 设置所有需要的数据,然后保存@user.save 但当我在保存到Worker后立即传递用户id时 EmailWelcome.perform\u async@user.id 它将nil作为用户id传递。。所以我的问题是,有没有人见过*_初始化方法的这种行为?我应该怎么做 编辑:还需要指出的是,它将记录保存在DB
@user=user.where(:provider=>@provider,:uid=>@shop[:uid])的代码。首先\u或\u初始化
设置所有需要的数据,然后保存@user.save
但当我在保存到Worker后立即传递用户id时
EmailWelcome.perform\u async@user.id
它将nil
作为用户id传递。。所以我的问题是,有没有人见过*_初始化方法的这种行为?我应该怎么做
编辑:还需要指出的是,它将记录保存在DB中您必须检查用户是否成功保存
@user = User.where(:provider => @provider, :uid => @shop[:uid]).first_or_initialize
if @user.save
EmailWelcome.perform_async @user.id
else
p @user.errors
end
或者使用
@user.save代码>,如果保存失败,这种方式将引发异常。在将id发送给工作进程时,是否确定id为零?或者工作进程无法根据作业的id找到用户
如果您使用的是诸如resque或sidekiq之类的工作进程,则在事务完成之前,它将无法访问用户。如果这是问题所在,您需要在提交后使用,或者在事务完成后使用其他方式将EmailWelcome
作业排队。我只是在寻找相同问题的答案。我有多个数据库,它正在开发中,但没有登台
暂存列上的id列缺少自动递增序列(在postgres中)
还有什么要你检查的
HTH忘了说,它将条目保存在DB@AigarsCibuļskis您可以发布更多代码来演示您的问题吗?