如何返回具有关联的ActiveRecord对象

时间:2015-03-12 17:05:45

标签: ruby-on-rails activerecord

我确定有一个简单的方法可以做到这一点,但谷歌用谷歌干了......

我有一个具有has_many关联的模型

Object.rb
has_many :things

我想基本上写

Object.include? :things

获取一个查询响应,其中包含至少有一件事的所有对象。

与has_one ..

相同

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

在Rails中使用where 3.2

# When *has_many* association:
Object.includes(:things).where("things.id IS NOT NULL")

# When *has_one* association:
Object.includes(:thing).where("things.id IS NOT NULL")

请注意,在where子句中,您需要使用实际的表名。

Rails(活动记录) 4.0 及以上添加了where.not,因此您可以执行此操作:

Object.includes(:things).where.not('things.id' => nil)
# or
Object.includes(:things).where.not(things: {id: nil})

答案 1 :(得分:1)

您也可以这样尝试

Object.includes(:things).where("things.id IS NOT NULL")