Elixir 毒药编码错误无法编码值。维克包装

Elixir 毒药编码错误无法编码值。维克包装,elixir,phoenix-framework,Elixir,Phoenix Framework,我正在尝试用phoenix框架构建一个简单的mailer应用程序,在这里我需要发送非阻塞电子邮件。为此,我决定使用这个软件包 问题是,当我将活动对象传递给Verk.enqueue时,会出现以下错误 Poison.EncodeError at POST /1/send unable to encode value: {nil, "campaigns"} - 下面的工作,但我必须等待几秒钟,它才能完成 Enum.each(campaign.group.users, fn(user) ->

我正在尝试用phoenix框架构建一个简单的mailer应用程序,在这里我需要发送非阻塞电子邮件。为此,我决定使用这个软件包

问题是,当我将活动对象传递给Verk.enqueue时,会出现以下错误

Poison.EncodeError at POST /1/send
unable to encode value: {nil, "campaigns"}
-

下面的工作,但我必须等待几秒钟,它才能完成

Enum.each(campaign.group.users, fn(user) ->
  Email.campaign_email(campaign, user) |> Mailer.deliver_later()
end)
如果我加上

  @derive {Poison.Encoder, only: [:name, :subject, :body]}
以下是终端日志中发生的情况

[info] EmailWorker 3874693212000703845 start
[debug] Job failed reason: %KeyError{key: :group, term: %{"body" => "<h1>Hello</h1>\r\n\r\n<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>\r\n\r\n<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>", "name" => "Lorem ipsum dolor sit amet, consectetur adipisicing elit", "subject" => "Lorem ipsum dolor sit amet"}}
[info]EmailWorker 3874693212000703845开始
[debug]作业失败原因:%KeyError{key::group,term:%%{“body”=>"您好\r\n\r\nLorem ipsum door sit amet,Adipising Elite,sed do eiusmod temporal incidedut ut labour and dolore magna aliqua.

\r\n\r\n但是,在小规模的情况下,我们必须在公共消费品市场上进行一次非商业性的劳动实践。我们必须在自由贸易区进行一次非商业性劳动不属于任何一方。除了偶尔出于不自卑的原因,还必须为自己的行为承担责任。

“,“姓名”=>“知识产权不属于任何一方,不属于任何一方,不属于任何一方”,“主体”=>“知识产权不属于任何一方”}
尝试将
:group
添加到派生中的
仅:[]
列表中。@Dogbert,如果我只是将
:group
添加到活动模型中,它会说
无法对值进行编码:{nil,“groups”}
,如果我也只将
添加到组模型中:[:user]
。它在浏览器中不会显示任何错误。但在终端中它仍然是
[debug]作业失败原因:%KeyError{key::group,术语:%%{“body”=>“
@Dogbert,我使用了campaign.name而不是campaign[“name”]在我的worker中。我想这是我的问题:/我从来没有使用过Verk,但是如果它使用字符串键解码为地图,那么这听起来是正确的,因为
只适用于atom键,您需要使用括号语法。将
:group
添加到活动中和
:users
添加到组编码器中解决了这个问题。
[info] EmailWorker 3874693212000703845 start
[debug] Job failed reason: %KeyError{key: :group, term: %{"body" => "<h1>Hello</h1>\r\n\r\n<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>\r\n\r\n<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>", "name" => "Lorem ipsum dolor sit amet, consectetur adipisicing elit", "subject" => "Lorem ipsum dolor sit amet"}}