Ruby on rails “创建后”不会在数据库中创建更改
根据Ruby on rails “创建后”不会在数据库中创建更改,ruby-on-rails,Ruby On Rails,根据家庭工作文档所属的作业的截止日期,我在创建后使用回调来计算提交的家庭工作文档的罚款 class HomeworkDocument < ActiveRecord::Base after_create :calculate_penalty private def calculate_penalty time_late = created_at - assignment.deadline case when time_late &l
家庭工作文档所属的作业
的截止日期,我在创建后使用回调来计算提交的家庭工作文档
的罚款
class HomeworkDocument < ActiveRecord::Base
after_create :calculate_penalty
private
def calculate_penalty
time_late = created_at - assignment.deadline
case
when time_late < 0
self.penalty = 0
when time_late > 1.day
self.penalty = 1
end
end
这是预期的吗?如果是这样的话,我如何在正确应用“创建后”回调后创建示例数据?您只需要添加一个调用来保存HomeworkDocument的实例,所以使用self.save
def calculate_penalty
time_late = created_at - assignment.deadline
case
when time_late < 0
self.penalty = 0
when time_late > 1.day
self.penalty = 1
end
self.save
end
def计算罚金
time\u late=在-assignment.deadline创建
案例
当时间延迟<0时
自我惩罚=0
当时间晚到>1.5天时
自我惩罚=1
结束
自救
结束
您必须调用.save
才能在数据库中保留更改(在计算惩罚
回调中),您完全正确。结果证明我的规范是错误的——我忘了从数据库中重新加载家庭作业变量。如果你回答这个问题,我会认为它是正确的。谢谢
def calculate_penalty
time_late = created_at - assignment.deadline
case
when time_late < 0
self.penalty = 0
when time_late > 1.day
self.penalty = 1
end
self.save
end