gpt4 book ai didi

ruby-on-rails - 模型内的延迟作业 - 参数数量错误

转载 作者:数据小太阳 更新时间:2023-10-29 08:49:13 31 4
gpt4 key购买 nike

这是我的模型:

class User
def join(race)
#blah blah blah ....
UserMailer.delay.join_race(self, race) #I'm stuck here
end
end

我的 UserMailer 是这样的

class UserMailer
def join_race(user, race)
#Another blah blah blah, nothing important here
mail(:to => user.email)
end
end

现在,每当我调用 user.join(race) 时,它都会显示如下错误:

ArgumentError: wrong number of arguments (2 for 1)
from /home/xxx/.rvm/gems/ruby-1.9.3-p194/gems/arel-3.0.2/lib/arel/expressions.rb:3:in `count'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:224:in `binary?'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:233:in `visit_String'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:102:in `accept'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:292:in `block in visit_Hash'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:290:in `each'
...

如果我将它转换为普通函数(没有 join_race 前面的 .delay),它就可以工作。

我发现了类似的问题,但它们都是关于在使用 where 后不调用 .all 方法。我怀疑 self 可能是问题所在,但我不知道如何让它工作。如果你们有任何线索,请与我分享。

最佳答案

此问题在 https://github.com/rails/arel/issues/149 中讨论,包括提及 Mailer 和延迟作业,以及相关的 https://github.com/rails/rails/issues/9263 .

包括以下解决方法:

module Arel
module Nodes
class SqlLiteral < String
def encode_with(coder)
coder['string'] = to_s
end
def init_with(coder)
clear << coder['string']
end
end
end
end

关于ruby-on-rails - 模型内的延迟作业 - 参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667768/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com