获得铁路财政年度的所有薪资单

时间:2013-09-16 12:01:08

标签: sql ruby-on-rails ruby activerecord

我正在申请中生成工资单。如何获得一个财政年度的所有工资单(2013年4月至2014年3月)

employee.rb

class Employee < ActiveRecord::Base
  ..
  has_many :payslips, class_name: "Employee::Payslip", foreign_key: :employee_id
  ..
end

payslip.rb

class Employee::Payslip < ActiveRecord::Base
  ..
  belongs_to :employee
  ..
  validates_uniqueness_of :employee_id, :scope => [:month, :year]
end

我尝试了很多但是无法得到它。

2 个答案:

答案 0 :(得分:3)

您似乎在payslip上有:month和:year属性,所以这应该是这样简单:

Payslip.where(:year => 2013)

编辑:对于所需的月份范围......

Payslip.where("((year = ? and month >= 4) or (year = ?+1 and month < 4))",2013, 2013)

对于某些查询优化工具可能效果不佳,最好将工资单的日期表示为实际日期,而不是年月数。

答案 1 :(得分:1)

您创建的每个活动记录对象都会有一个名为“created_at”的字段...您可以使用此字段和Time.now作为限制来获取工资单:))

Time.now
=> 2013-09-16 17:37:48 +0530

1.year.ago Time.now
=> 2012-09-16 17:37:49 +0530

如果使用squeel,编写查询将是一块蛋糕。

PaySlip.where{created_at < Time.now and created_at > (1.year.ago Time.now)}

我使用当前年份进行此查询... 如果您想要特定年份的工资单,请分配变量并将其放入查询中。

例如:Time.new(2012) => 2012-01-01 00:00:00 +0530

检查this是否有吱吱声......