0

私には3つのモデルがあり、それぞれがそのように接続されGroupsStudentsAbsencesます。

Absencesと呼ばれるフィールドがありますcreated_on

私はグループIDしか持っていないので、今日欠席しているすべての学生を取得したいと思います。

Studentモデル内にこのメソッドを作成しました。

# Inside student.rb

def self.absent_today_in_group (group)
 #SQLITE
 find(:all, :joins => :absences, :conditions => ["STRFTIME('%d', created_on) = ? AND STRFTIME('%m', created_on) = ?", Date.today.day, Date.today.month])

 #POSTGRES
 #find(:all, :joins => :absences, :conditions => ["EXTRACT(DAY FROM created_on) = ? AND EXTRACT(MONTH FROM created_on) = ?", Date.today.day, Date.today.month])
end

そのクエリが何も返さないのはなぜですか?そして、どうすればgroup_idも確認できますか?

4

2 に答える 2

3

どのバージョンのレールを使用していますか?Rails3でこれを行うことができます:

def self.absent_today_in_group(group)
  joins(:absences, :group).where(
    'absences.created_on' => (Time.now.beginning_of_day..Time.now.end_of_day),
    'groups.id' => group.id
  )
end

これにより、特定のグループで今日欠席したすべてのユーザーが見つかります。

于 2012-09-13T13:47:37.240 に答える
0

これは:conditionsではなく:whereである必要がありますか?

于 2012-09-13T13:34:32.350 に答える