【发布时间】:2014-07-30 07:21:45
【问题描述】:
我正在尝试创建和更新合同。 create 工作正常。但是我的更新采用默认值而不是我编辑的值。为什么?我的结束日期始终是开始日期的下一年。
before_filter :only => :create do
@contract = Contract.new(params[:contract])
if @contract.start_date.present?
n = @contract.num_years
n = n.blank? ? 1 : n.to_i
@contract.end_date = @contract.start_date + n.years - 1.day
end
@contract.save!
Mailers.delay(queue: "Mailers").contract_created_notification(@contract)
end
controller do
def update
@contract = Contract.find(params[:id])
if @contract.start_date.present?
n = @contract.num_years
n = n.blank? ? 1 : n.to_i
@contract.end_date = @contract.start_date + n.years - 1.day
update!
Mailers.delay(queue: "Mailers").contract_created_notification(@contract)
end
end
日志文件:
插入
delayed_jobs(attempts,created_at,failed_at,handler,last_error,locked_at,locked_by,priority, @98765433@2, @98765433@2, @98765433@2 987654334@) 值 (0, '2014-07-30 06:41:57', NULL, '--- !ruby/object:Delayed::PerformableMailer\nobject: !ruby/class \'Mailers\'\nmethod_name: :contract_created_notification\nargs:\n- !ruby/ActiveRecord:Contract\n 属性:\n id: 464\n school_id: 370\n start_date: 2014-07-01\n end_date: 2022-06-30\n num_students: 900\n pymt_status: false\n created_at: &1 2014-07-30 06:41:57.876186386 Z\n updated_at: *1\n', NULL, NULL, NULL, 0, 'Mailers', '2014-07-30 06:41:57', '2014-07-30 06:41:57')
> Parameters: {"utf8"=>"✓", "authenticity_token"=>"F7W4ccjQe8wk8Z9VZB18efJBhHp6LPCtifC6PDYVEF0=", "contract"=>{"start_date(1i)"=>"2014", "start_date(2i)"=>"7", "start_date(3i)"=>"1", "num_years"=>"5", "num_students"=>"100", "pymt_status"=>"0"}, "commit"=>"Update Contract", "id"=>"465"}
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-30 08:23:24', NULL, '--- !ruby/object:Delayed::PerformableMailer\nobject: !ruby/class \'Mailers\'\nmethod_name: :contract_notification\nargs:\n- !ruby/ActiveRecord:Contract\n attributes:\n id: 465\n school_id: 370\n start_date: 2014-07-01\n end_date: 2015-06-30\n num_students: 100\n pymt_status: false\n created_at: 2014-07-30 08:04:22.000000000 Z\n updated_at: 2014-07-30 08:23:24.782557418 Z\n', NULL, NULL, NULL, 0, 'Mailers', '2014-07-30 08:23:24', '2014-07-30 08:23:24')
【问题讨论】:
-
{a} 我看到了 create 操作的日志,但是您能否也添加 update 操作的日志,这表明了问题? {b} 您的日志还应该包含要发布的参数,例如
Parameters: {"utf8"=>"✓", "topic"=>"General", ... }- 来自创建和更新重复的这一行也会很有帮助。 -
感谢您的回答。我从更新中添加我的日志
标签: ruby-on-rails ruby