私は Teacher payslip Controller ですが、オブジェクトを使用して net_salary を取得すると、その値ではなくブール値が表示されます。
def payslip_report
if params[:teacher_id] and params[:month_year].present?
@month_and_year = params[:month_year].gsub(' ','')
@teacher_data = TeacherPayslip.where(:teacher_id => params[:teacher_id])
@matched_records = @teacher_data.select{|t| t.salary_date.strftime("%B%Y") == @month_and_year}
#returns an array of TeacherPayslip records with matching month and year
if @matched_records.blank?
raise "2"
else
@report = @matched_records.first
raise @report.net_salary.inspect
end
end
終わり
@report.net_salary を調べると true が表示されます。@report には、basic,pf,da,net_salary 値が含まれます。@pf = @report.pf は、pf 値を取得することを意味します。しかし、net_salary を取得しようとすると、float 値ではなく Boolean 値が表示されます。
raise @report.inspect を含む
これがTeacherPayslipモデルです
class TeacherPayslip < ActiveRecord::Base
attr_accessible :teacher_id,:salary_date,:hra,:bonus,:pf,:da,
:special_allowance,:basic,:net_salary,:month_year
#associations
belongs_to :teacher
#callbacks
after_create :net_salary
def net_salary
@teacher_id = self.id
@da = (self.basic * self.da)/100
@hra = (self.basic * self.hra)/100
@gs = @da + @hra + self.basic
@pf = (@gs * self.pf)/100
@netsalary = @gs - @pf + self.special_allowance + self.bonus
@a = TeacherPayslip.find(@teacher_id)
#raise @a.inspect
@a.update_attribute('net_salary',@netsalary)
end
end