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并使用它进行开发是个好主意。是的,我同意。谢谢你的帮助!