尝试使用delayed_job_active_record将一些内容发送到后台,但为什么我不能使用begin
delete from temp;
insert into temp values (1);
dbms_output.put_line('Done');
end;
/
select * from table;
?当事情没有发送到后台时工作正常。
any?
index.html.erb
undefined method `any?' for #<Delayed::Backend::ActiveRecord::Job:0x000000044b1348>
main_controller.rb
<% if @products.any? %>
<div class="products">
<% @products.each do |product| %>
<%= product.name %>
<% end %>
</div>
<% else %>
<div class="products processing">
<!-- Try again later -->
</div>
<% end %>
affiliate.rb
class MainController < ApplicationController
def index
# Delay fetching
@products = Affiliate.delay.fetch
end
end
答案 0 :(得分:2)
这不起作用,因为@products
不再是一个数组 - 它是对将来某个时间执行的作业的引用
您需要重新考虑设置的工作原理。例如,您的视图可以通过Ajax进行轮询以查看作业是否已完成。如果它已从DB获取结果,因为您似乎在那里保存API结果。