Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 延迟的作业无法更新参数_Ruby On Rails_Delayed Job - Fatal编程技术网

Ruby on rails 延迟的作业无法更新参数

Ruby on rails 延迟的作业无法更新参数,ruby-on-rails,delayed-job,Ruby On Rails,Delayed Job,我正在尝试在创建事务时发送邮件。邮件内容包含事务的开始日期、结束日期和年份。尝试使用deliver方法时,邮件包含所有信息。但当我尝试使用延迟工作时,我无法获得年数。为什么?有人帮我吗 def create @transaction = Transaction.new(params[:transaction]) if transaction.start_date.present? transaction.save! Mailers.delay.transaction_crea

我正在尝试在创建事务时发送邮件。邮件内容包含事务的开始日期、结束日期和年份。尝试使用deliver方法时,邮件包含所有信息。但当我尝试使用延迟工作时,我无法获得年数。为什么?有人帮我吗

def create
  @transaction = Transaction.new(params[:transaction])
  if transaction.start_date.present?
   transaction.save!
   Mailers.delay.transaction_created_notification(@transaction)
end

transaction.save!
Mailers.delay.transaction_created_notification(@transaction)
看法

事务已创建。
交易开始日期:

交易结束日期:

年数:

日志文件

    Started POST "transaction" for 127.0.0.1 at 2014-07-25 16:02:10 +0530
       Processing by TransactionController#create as HTML
           Parameters{"utf8"=>"✓","authenticity_token"=>"ziUJghnsfUjuWA5ar17lgZ0QaOz0Psm3L8lN0wXa7tY=", "transaction"=>{ "start_date(1i)"=>"2014", "start_date(2i)"=>"7", "start_date(3i)"=>"1", "num_years"=>"10"}, "commit"=>"Create Transaction"}


   (0.1ms)  BEGIN
   SQL (0.3ms)  INSERT INTO `delayed_jobs` (`attempts`, `created_at`, `failed_at``handler`, `last_error`, `locked_at`, `locked_by`, `priority`, `queue`, `run_at`, `updated_at`) VALUES (0, '2014-07-25 10:32:10', NULL, '--- !ruby/object:Delayed::PerformableMailer\nobject: !ruby/class \'Mailers\'\nmethod_name: :transaction_created_notification\nargs:\n- !ruby/ActiveRecord:Transaction\n attributes:\n id: 435\n school_id: 371\n start_date: 2014-07-01\n end_date: 2024-06-30\n created_at: &1 2014-07-25 10:32:10.446748247 Z\n updated_at: *1\n', NULL, NULL, NULL, 0, NULL, '2014-07-25 10:32:10', '2014-07-25 10:32:10')
    (40.6ms)  COMMIT
    Redirected to http://sat.lvh.me:3000/Transaction/371
    Filter chain halted as #         <Proc:0x0000000bd6d408@/home/kavi/newproject/app/admin/Transaction.rb:40> rendered or redirected
   Completed 302 Found in 108.4ms (ActiveRecord: 68.8ms)
于2014-07-25 16:02:10+0530开始127.0.0.1的后期“交易”
TransactionController处理#创建为HTML
参数{“utf8”=>“✓","真实性令牌“=>“ziUJghnsfUjuWA5ar17lgZ0QaOz0Psm3L8lN0wXa7tY=”,“事务”=>{“开始日期(1i)”=>“2014”,“开始日期(2i)”=>“7”,“开始日期(3i)”=>“1”,“数年”=>“10年”,提交“=>“创建事务”}
(0.1ms)开始
SQL(0.3ms)插入到“延迟的”作业(“尝试”,“创建的”在“,”处理程序“,”失败的“,”上次错误“,”锁定的“,”锁定的“,”优先级“,”队列“,”运行的“,”更新的“)值中(0,'2014-07-25 10:32:10',NULL,'--!ruby/object:Delayed::PerformableMailer\noObject:!ruby/class'Mailers\'\n方法名称::事务创建通知\n地址:\n-!ruby/ActiveRecord:transaction\n属性:\n id:435\n school\n id:371\n开始日期:2014-07-01\n结束日期:2024-06-30\n创建日期:&1 2014-07-25 10:32:10.6748247 Z\n更新t:*1\n',空,空,空,0,空,'2014-07-25 10:32:10','2014-07-25 10:32:10')
(40.6ms)提交
重定向到http://sat.lvh.me:3000/Transaction/371
过滤器链在渲染或重定向时停止
在108.4ms内完成302次(ActiveRecord:68.8ms)

好吧,您还没有共享
事务
模型,但是由于
num_years
没有被序列化到延迟的作业记录中,我假设这是因为它是一个实例变量,数据库中没有列。DJ在运行作业时从DB重新加载记录,因此实例变量将“无法初始化。是否可以从其他列计算它?如果是,请将其设置为实例方法而不是变量,以便在DJ从DB重新加载记录后重新计算它。

查看日志文件中处理程序的序列化数据,您传递的参数类型似乎是
Contract
,而不是。”e> 事务。除非您在生成日志后更改了代码。我们可以查看事务和合同的模型吗?我现在已经更新了正确的日志文件。谢谢,我在db中添加了一个新列。
    Started POST "transaction" for 127.0.0.1 at 2014-07-25 16:02:10 +0530
       Processing by TransactionController#create as HTML
           Parameters{"utf8"=>"✓","authenticity_token"=>"ziUJghnsfUjuWA5ar17lgZ0QaOz0Psm3L8lN0wXa7tY=", "transaction"=>{ "start_date(1i)"=>"2014", "start_date(2i)"=>"7", "start_date(3i)"=>"1", "num_years"=>"10"}, "commit"=>"Create Transaction"}


   (0.1ms)  BEGIN
   SQL (0.3ms)  INSERT INTO `delayed_jobs` (`attempts`, `created_at`, `failed_at``handler`, `last_error`, `locked_at`, `locked_by`, `priority`, `queue`, `run_at`, `updated_at`) VALUES (0, '2014-07-25 10:32:10', NULL, '--- !ruby/object:Delayed::PerformableMailer\nobject: !ruby/class \'Mailers\'\nmethod_name: :transaction_created_notification\nargs:\n- !ruby/ActiveRecord:Transaction\n attributes:\n id: 435\n school_id: 371\n start_date: 2014-07-01\n end_date: 2024-06-30\n created_at: &1 2014-07-25 10:32:10.446748247 Z\n updated_at: *1\n', NULL, NULL, NULL, 0, NULL, '2014-07-25 10:32:10', '2014-07-25 10:32:10')
    (40.6ms)  COMMIT
    Redirected to http://sat.lvh.me:3000/Transaction/371
    Filter chain halted as #         <Proc:0x0000000bd6d408@/home/kavi/newproject/app/admin/Transaction.rb:40> rendered or redirected
   Completed 302 Found in 108.4ms (ActiveRecord: 68.8ms)