1

我创建了一个变量,名为node

doc.xpath('//Product').each do |node|

并将其传递给这样的延迟工作:

delay.create_new_book_record(client_id, user_id, node)

虽然我传入的变量“节点”在我将它传递给延迟方法之前看起来像这样:

  //node.inspect #=> 
  <Product>
   <RecordReference>9780857380272</RecordReference>
   <NotificationType>02</NotificationType>
   #...etc

它像这样传递给延迟的工作,对我来说这看起来像一个空哈希:

INSERT INTO "delayed_jobs"
....
:create_new_book_record\nargs:\n- 1\n- 2\n- !ruby/object:Nokogiri::XML::Element {}\n"]

当我尝试解析 delay_job 任务中的节点时抛出的错误是

wrong argument type Nokogiri::XML::Element (expected Data)

那么:如何将 Nokogiri::XML::Element 传递给延迟的作业任务,以便可以在任务中进行处理?

4

1 回答 1

1

nvm:您可以简化作为参数传递的内容并在另一端重新构建 nokogiri 对象:

client_id = 1
user_id   = 2
node_to_s = node.to_s
book      = Book.where(:blah => blah)
delay.update_book_record(client_id, user_id, book.first.id, node_to_s)


def update_book_record(c, u, b, n)
  book = Book.find(b)
  node = Nokogiri::XML(n)
  #... 
于 2013-08-31T12:35:07.033 回答