我的作业模型包含 ID 和百分比字段(以及其他字段)。
百分比可能是nil
。
我想在此处设置默认百分比:
class JobsController
def new
...
@job.percentage = <what should be here?>
...
end
end
应该像这样计算:
nil
。nil
,则应为23。最简单的计算方法是什么?
答案 0 :(得分:2)
您应该在Job
模型中执行此操作:
[更新]
在回调中添加了new_record?
的测试,因为百分比可以合法地为nil
;如果之前已经设置过,我们不想覆盖它。
class Job < ActiveRecord::Base
after_initialize :calculate_default_percent
# other stuff
private
def calculate_default_percent
if self.new_record?
conditions = { :conditions => "percentage NOT NULL" }
self.percentage = Job.last(conditions).nil? ? 23 : Job.last(conditions).percentage
end
end
end
答案 1 :(得分:1)
您必须根据需要编写命名范围以查找最近的记录。
named_scope :recent, :conditions => "percentage != '' && percentage IS NOT NULL", :order => 'ID DESC', :limit => 1 ####Before Save def calculate_default_percent record = Job.recent.first self.percentage ||= (record.nil? ? 23 : record.percentage) end