Ruby on rails Rails在这种特定情况下如何使用join?

Ruby on rails Rails在这种特定情况下如何使用join?,ruby-on-rails,activerecord,join,Ruby On Rails,Activerecord,Join,我有三个模型,每个模型都是这样连接的:组,其中有许多学生,其中有许多缺席 缺勤在上创建了一个名为的字段 我只有一个组id,希望获得今天缺席的所有学生。 我在我的学生模型中创建了此方法: # Inside student.rb def self.absent_today_in_group (group) #SQLITE find(:all, :joins => :absences, :conditions => ["STRFTIME('%d', created_on) = ? A

我有三个模型,每个模型都是这样连接的:
,其中有许多
学生
,其中有许多
缺席

缺勤
在上创建了一个名为
的字段

我只有一个组id,希望获得今天缺席的所有学生。

我在我的
学生
模型中创建了此方法:

# 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

为什么这个查询不会返回任何东西?那么我怎么才能同时检查组id呢?

这不是应该是:where和not:conditions吗?

这不是应该是:where和not:conditions吗?

您使用的是什么版本的rails?您可以在rails 3中执行此操作:

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

这将找到给定组中今天缺席的所有用户。

您使用的rails版本是什么?您可以在rails 3中执行此操作:

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

这将查找给定组中今天缺席的所有用户。

Yepp..我的错,抱歉!!我通常使用方法语法,然后是它的.where([…])Yepp..我的错,对不起!!我通常使用方法语法,然后使用它的.where([…])日志告诉您有关生成的SQL查询的内容是什么?日志告诉您有关生成的SQL查询的内容是什么?谢谢!我使用的是Rails3,现在可以在SQlite的开发中使用,它可以在PostGres上使用吗(在heroku上)?顺便说一句,将您的开发环境与生产环境相匹配(如果可能的话)是一个很好的实践。所以,在本地机器上安装postgres并使用它进行开发是个好主意。是的,我同意。谢谢你的帮助!非常感谢。我使用的是Rails3,现在可以在SQlite的开发中使用,它可以在PostGres上使用吗(在heroku上)?顺便说一句,将您的开发环境与生产环境相匹配(如果可能的话)是一个很好的实践。所以,在本地机器上安装postgres并使用它进行开发是个好主意。是的,我同意。谢谢你的帮助!