Rails 4 中的左外连接

2023-11-22

我有3个型号:

class Student < ActiveRecord::Base
  has_many :student_enrollments, dependent: :destroy
  has_many :courses, through: :student_enrollments
end

class Course < ActiveRecord::Base   
    has_many :student_enrollments, dependent: :destroy
    has_many :students, through: :student_enrollments
end

class StudentEnrollment < ActiveRecord::Base
    belongs_to :student
    belongs_to :course
end

我希望查询 Courses 表中的课程列表,这些课程在 StudentEnrollments 表中不存在,但与某个学生关联。

我发现也许 Left Join 是可行的方法,但似乎 Rails 中的 join() 只接受表作为参数。 我认为可以实现我想要的 SQL 查询是:

SELECT *
FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = se.course_id
WHERE se.id IS NULL AND se.student_id = <SOME_STUDENT_ID_VALUE> and c.active = true

如何以 Rails 4 方式执行此查询?

任何意见都会受到赞赏。


您也可以传递一个作为 join-sql 的字符串。例如joins("LEFT JOIN StudentEnrollment se ON c.id = se.course_id")

虽然为了清楚起见,我会使用 Rails 标准表命名:

joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 4 中的左外连接 的相关文章

  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • sql查询将两列与一列连接起来

    我在 MS Access 2010 中有 2 个表 如下所示 USERS u id u name LOAN l id l from ref users u id l to ref users u id l amount Users u id
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • SQL Server 用分隔符分割字符串

    我有一个输入字符串 100 2 3 101 2 1 103 2 3 我想解析它并将其添加到具有 3 列的表中 因此它应该是 f x col1 col2 col3 100 2 3 类似的其他数据以逗号分隔作为记录和 作为列 Thanks ni
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 有时您可能需要重新启动 Webrick 才能看到所做的更改,这是否正确?

    我听 Kevin Skoglund lynda com 说 养成在开发过程中频繁重新启动 Webrick 的习惯是一个很好的习惯 虽然通常您不需要重新启动 Webrick 来查看更改 但他暗示在某些特殊情况下可能需要这样做 有谁知道这些情况
  • 在 ActiveAdmin 或打印解决方案中动态更改分页

    我是 Activeadmin 和 Rails 的新手 我需要一些帮助 我有一个分页模型 我想允许用户更改分页值或完全禁用它 这样它就可以打印 到打印机 所有记录 或过滤后的记录 我知道我可以在 before filter 中使用 per p

随机推荐

  • PHP 自动包含

    我想在服务器的每次执行中自动包含一个 PHP 脚本 我希望通过 PHP ini 通过设置或能够在 php 中编写一个简单的扩展并包含我的 php 脚本来完成此操作 您可以设置auto prepend file指令在你的php ini fil
  • 如何提取 SVN 转储?

    我收到了一个 SVN 转储文件 其中包含很多页面 所有 HTML 页面 以及所有服务器端代码 我想将它们分开 但不知道如何做到这一点 我在 Windows 上 根本没有 SVN 亚当 巴特勒的答案几乎是完美的 但我遇到了一些问题 所以这是我
  • 应用程序在到达 main.m 之前在模拟器 5.0 上崩溃 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 应用程序在使用 Xcode 4 2 和 iOS 5 进入 main 之前崩溃 我正在开发一个在模拟器 4 3 上运行良好的应用程序 但是当我在模拟器 5 0 上尝试它时 它甚至在到达 main
  • Java8 文件流,如何控制文件的关闭?

    假设我有一个Java8Stream
  • 从句子中提取“有用”信息?

    我目前正在尝试理解这种形式的句子 The problem was more with the set top box than the television Restarting the set top box solved the pro
  • null 是一个对象吗?

    为空Object在Java中 如果 null 是一个对象 它将支持以下方法java lang Object例如equals 然而 情况并非如此 对 null 的任何方法调用都会导致NullPointerException 这就是Java语言
  • 将字节数组转换为 int 的更快方法

    有没有比更快的方法BitConverter ToInt32将字节数组转换为 int 值 我实际上尝试了几种不同的方法将四个字节转换为 int BitConverter ToInt32 new byte w x y z 0 BitConver
  • ffmpeg av libs 可以返回准确的 PTS 吗?

    我正在使用使用 IBBP GOP 序列的 mpeg 流 这 DTS PTS 前 4 个 AVPacket 返回的值如下 I 0 3 B 1 1 B 2 2 P 3 6 I 帧上的 PTS 看起来是合法的 但 B 帧上的 PTS 不可能是正确
  • Python错误:“NoneType”对象没有属性“find_all”

    我正在改编一个网络抓取程序 http danielfrg com blog 2013 04 01 nba scraping data disqus thread 将 ESPN 的棒球数据抓取到 CSV 中 但是 当我运行第二段代码来编写游戏
  • 带有符号链接的 mod_xsendfile

    我在 Rails 3 应用程序中使用 xsendfile 时遇到问题 我使用 capistrano 来管理部署 在每个版本中 都有一个指向共享 资产目录的符号链接 例如 var www site releases 1234 assets g
  • 部署应用程序引擎应用程序时如何处理敏感配置信息?

    示例 我有一个应用程序需要访问提供身份验证令牌的 API myApi MyApi token my private sensible token 我想避免在属于项目一部分的配置文件中包含该私有令牌 我想到的一个解决方案是在一个单独的代理应用
  • 当Java自动更新时更新Windows路径变量?

    这个问题询问如何在 Windows 中设置路径变量以包含 Java bin 目录 从而允许您在提示符下使用 javac 命令 针对此问题发布的解决方案指出您应该对最新 Java 安装的绝对路径进行硬编码 在这种情况下 它恰好是c progr
  • 如何在不同的包中使用两个同名的类? [复制]

    这个问题在这里已经有答案了 如何访问不同包中具有相同名称的两个类 foo bar myClass class and foo myClass class 所有这些都在同一个班级中 TestRunner Suite class SuiteTe
  • 使用 pgAdmin 进行远程 PostgreSQL 连接

    我正在尝试通过基于 Ubuntu 16 04 的服务器上运行的 PostgreSQL 建立远程连接 到目前为止 当我单击 pgAdmin 上的 保存 按钮时 它有点冻结 什么也不做 输入 manage py runserver My dro
  • 处理 BeautifulSoup CSS 选择器中的冒号

    输入 HTML div style display flex div class half style font size 6 width 33 apple div div class half style font size 6 text
  • iOS Swift,Enum CaseIterable 扩展

    我正在尝试为枚举编写一个扩展CaseIterable这样我就可以获得原始值的数组而不是案例 但我并不完全确定如何做到这一点 extension CaseIterable static var allValues String get ret
  • Parcelable 中的 Parcel 读/写操作时变量顺序是否重要?

    我有以下实现Parcelable class public class DemoModel implements Parcelable private String para1 private int para2 public DemoMo
  • 在 T-SQL 中使用环境变量

    如何在 T SQL 脚本中读取系统环境变量的值 这是在 SQL Server 2005 上运行 要 读取 T SQL 脚本中系统环境变量的值 您可以将 SQL Management Studio 设置为使用 sqlcmd 模式 然后你可以像
  • Shell脚本:如何删除目录中除文件中列出的文件之外的所有文件?

    我有一个目录 temp 包含许多文件和子目录 并且在某些目录中 可能还包含其他文件和子目录 另外 在目录 temp 它包含一个特殊的txt文件 名为kept txt 它列出了其中包含的一些直接文件和子目录 temp 现在我想删除下面的所有其
  • Rails 4 中的左外连接

    我有3个型号 class Student lt ActiveRecord Base has many student enrollments dependent destroy has many courses through studen