Ruby on rails 在When语句中正确重构的建议?
我试图在WHE语句中调用两个较长的命令,但出于某种原因,由于其语法,调用时它会执行两次其中的两个命令:Ruby on rails 在When语句中正确重构的建议?,ruby-on-rails,switch-statement,delayed-job,Ruby On Rails,Switch Statement,Delayed Job,我试图在WHE语句中调用两个较长的命令,但出于某种原因,由于其语法,调用时它会执行两次其中的两个命令: @email = Email.find(params[:id]) delivery = case @email.mail_type # when "magic_email" these two delayed_jobs perform 2x instead of 1x. Why is that? when "magic_email" then Delayed:
@email = Email.find(params[:id])
delivery = case @email.mail_type
# when "magic_email" these two delayed_jobs perform 2x instead of 1x. Why is that?
when "magic_email" then Delayed::Job.enqueue MagicEmail.new(@email.subject, @email.body)
Delayed::Job.enqueue ReferredEmail.new(@email.subject, @email.body)
when "org_magic_email" then Delayed::Job.enqueue OrgMagicEmail.new(@email.subject, @email.body)
when "all_orgs" then Delayed::Job.enqueue OrgBlast.new(@email.subject, @email.body)
when "all_card_holders" then Delayed::Job.enqueue MassEmail.new(@email.subject, @email.body)
end
return delivery
如何使我在点击“magic_email”时,只会将这两个延迟的作业呈现一次 q = [] a = case 1 when 1 then q.push 'ashish' q.push 'kumar' when 2 then q.push 'test' when 4 then q.push 'another test' end puts a.inspect #######["ashish", "kumar"] q=[] a=案例1 当1时,按下“ashish” q、 推‘库马尔’ 当2时,q.推送“测试” 当4时,q.推动“另一个测试” 结束 把a.inspect放进去
这很好用。这意味着语法正常时,您的情况。可能是您有其他问题。您正在调用
返回传递
,而传递变量可能具有再次调用延迟作业的值。这取决于然后
语句返回的内容,因此,如果可能,请尝试不返回任何内容。我相信您希望使用该函数执行延迟的工作,而不返回任何内容
也许您应该只使用
大小写
,而不将其存储在任何变量中。我的意思是交付变量在这里没有任何用途 我当时不知道有一个,
。请问您对送货做了什么
?case语句完成后它有值吗?我忘了在末尾添加return。这样,当执行此方法时,它只会生成它所到达的延迟::作业。