-1

アプリケーションで給与計算を生成しています。2013年4月~2014年3月分の給与明細を一括で取得する方法

従業員.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

いろいろ試しましたが取れませんでした。

4

2 に答える 2

3

給与明細に :month および :year 属性があるように見えるので、これは次のように単純なはずです。

Payslip.where(:year => 2013)

編集:必要な月の範囲について...

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

これは一部のクエリ オプティマイザーではうまく機能しない可能性があり、給与明細の日付を年月数ではなく実際の日付として表す方がよいでしょう。

于 2013-09-16T12:17:05.617 に答える
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

鳴き声を確認てください...

于 2013-09-16T12:11:22.587 に答える