如何解决Delayed::Job 丢失活动记录关系,而是数组
我有一个用于发送电子邮件的工作类。我正在传递集合(活动记录关系对象,让我们说 @payments = Payment.where(status: 'pending')
到 Mailer 类的参数。
Delayed::Job.enqueue(
EmailJob.new(
company: current_company,type: :payments,collection: @payments # Payment::ActiveRecord_Relation
),target: 'Payment Email',company: current_company
)
我面临的问题是,当工作人员选择工作时,集合被视为只是 Array
的付款,我希望这是一个 activerecord 集合对象,以便我可以对这些进行一些处理.
解决方法
ActiveJob 默认支持以下类型的参数:
- 基本类型(NilClass、String、Integer、Float、BigDecimal、TrueClass、FalseClass)
- 符号
- 日期
- 时间
- 日期时间
- ActiveSupport::TimeWithZone
- ActiveSupport::Duration
- 哈希(键应该是字符串或符号类型)
- ActiveSupport::HashWithIndifferentAccess
- 数组
- 模块
- 班级
-Rails guides: Active Job Basics
当你传递一个 ActiveRecord::Relation
时,Rails 会通过将它转换成一个数组来序列化它,因为它是不受支持的类型。 ActiveJob 确实使用 GlobalId 来传递个人记录,因此似乎更好的选择可能只是创建关联或其他一些方法来获取给定公司的工作中的付款。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。