Mongoid::Document 是 ActiveJobs 的 GlobalID::Identification 吗?
Is Mongoid::Document a GlobalID::Identification for ActiveJobs?
根据 ActiveJobs guide,第 8 节,它说:
This works with any class that mixes in GlobalID::Identification,
which by default has been mixed into Active Model classes.
Mongoid::Document
混合 ActiveModel::Model
,但我在其 included_modules 中找不到 GlobalID::Identification
。
GlobalID::Identification
在哪里定义的?
我可以为我的 ActiveJobs 有效地使用任何 Mongoid::Document
吗?
指南中有错误。 GlobalID::Identification
已混入 ActiveRecord
。如果你将 GlobalID::Identification
混合到你的 mongoid 文档中,它将自动工作,因为 GID 需要实例响应 id
(returning uniq 标识符)和 class 响应find
(传递 id
将 return 一条记录)。
要向遇到相同问题的任何人提供更多信息,只需将 GlobalID::Identification
添加到您的模型即可使其正常工作。
class User
include Mongoid::Document
include GlobalID::Identification
end
我实际上是通过重新打开 Mongoid::Document
:
module Mongoid::Document
include GlobalID::Identification
end
但是,有时我会遇到一些非常奇怪的错误,ActiveJob
不知道如何序列化我的模型。我试图调试它,但每当我进入 ActiveJob
代码时,我有:
pry> User.is_a? GlobalID::Identification
=> true
但是 ActiveJob::Arguments.serialize_argument 没有按预期工作。
解决方法也是重新打开Mongoid::Relations::Proxy
:
class Mongoid::Relations::Proxy
include GlobalID::Identification
end
在你的初始值设定项中加入类似这样的内容:
# config/initalizers/mongoid.rb
if defined?(Mongoid)
# GlobalID is used by ActiveJob (among other things)
# https://github.com/rails/globalid
Mongoid::Document.send(:include, GlobalID::Identification)
Mongoid::Relations::Proxy.send(:include, GlobalID::Identification)
end
根据 ActiveJobs guide,第 8 节,它说:
This works with any class that mixes in GlobalID::Identification, which by default has been mixed into Active Model classes.
Mongoid::Document
混合 ActiveModel::Model
,但我在其 included_modules 中找不到 GlobalID::Identification
。
GlobalID::Identification
在哪里定义的?我可以为我的 ActiveJobs 有效地使用任何
Mongoid::Document
吗?
指南中有错误。 GlobalID::Identification
已混入 ActiveRecord
。如果你将 GlobalID::Identification
混合到你的 mongoid 文档中,它将自动工作,因为 GID 需要实例响应 id
(returning uniq 标识符)和 class 响应find
(传递 id
将 return 一条记录)。
要向遇到相同问题的任何人提供更多信息,只需将 GlobalID::Identification
添加到您的模型即可使其正常工作。
class User
include Mongoid::Document
include GlobalID::Identification
end
我实际上是通过重新打开 Mongoid::Document
:
module Mongoid::Document
include GlobalID::Identification
end
但是,有时我会遇到一些非常奇怪的错误,ActiveJob
不知道如何序列化我的模型。我试图调试它,但每当我进入 ActiveJob
代码时,我有:
pry> User.is_a? GlobalID::Identification
=> true
但是 ActiveJob::Arguments.serialize_argument 没有按预期工作。
解决方法也是重新打开Mongoid::Relations::Proxy
:
class Mongoid::Relations::Proxy
include GlobalID::Identification
end
在你的初始值设定项中加入类似这样的内容:
# config/initalizers/mongoid.rb
if defined?(Mongoid)
# GlobalID is used by ActiveJob (among other things)
# https://github.com/rails/globalid
Mongoid::Document.send(:include, GlobalID::Identification)
Mongoid::Relations::Proxy.send(:include, GlobalID::Identification)
end