1

我的应用是 Rails 3 + Delayed Job (2.1.4) + Devise(2.1.2) + Devise Async (0.3.1)。

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

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

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

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

谢谢

4

2 回答 2

0

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

attr_accessible :added_by, :added_to
于 2012-10-11T02:39:07.177 回答
0

DelayedJob 在属性访问器方面存在重大问题(所以我非常怀疑您的问题与设计有关)。本质上,ActiveRecord::Base 的 encode_with 和 init_with 方法需要在使用 DelayedJob 时被覆盖以包含属性访问器——至少除非您使用自定义。我建议在这里寻找有关如何解决此问题的想法。

于 2013-07-03T03:15:58.710 回答