我正在申请中生成工资单。如何获得一个财政年度的所有工资单(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
我尝试了很多但是无法得到它。
答案 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是否有吱吱声......