Devise Async没有在延迟作业中记录attr_accessor?

时间:2012-10-10 22:54:38

标签: ruby-on-rails ruby-on-rails-3 devise delayed-job

我的应用是Rails 3 +延迟工作(2.1.4)+设计(2.1.2)+设计异步(0.3.1)。

我正在使用此设计设置将所有设计电子邮件发送为异步。这适用于新用户,但在我的邀请流程中,我执行以下操作:

added_user = User.new(:email => email, :added_by => current_user, :added_to => @group)

这里的问题是added_by和added_to是虚拟属性(attr_accessor)。当延迟作业异步在延迟作业中插入作业时,虚拟属性不存在,并且会发生错误。

有关如何处理这种情况的任何想法?这是延迟作业问题还是设计异步问题?我不完全确定从哪里开始,谷歌搜索没有帮助。

由于

2 个答案:

答案 0 :(得分:0)

我唯一能想到的是你没有通过质量分配使add_by和added_to可访问。在Rails的更高版本中,您可以引发MassAssignmentSecurity错误,但在您的情况下可能无法使用或启用此错误。尝试将以下内容添加到您的模型中:

attr_accessible :added_by, :added_to

答案 1 :(得分:0)

DelayedJob在属性访问器方面存在严重问题(所以我非常怀疑你的问题与Devise有关)。从本质上讲,在使用DelayedJob时,需要重写ActiveRecord :: Base的encode_with和init_with方法以包含属性访问器 - 至少除非您使用自定义。我建议查看here以了解如何解决此问题。