2012-12-10 31 views
0

如果模型用户HAS_ONE档案,有一个简单的方法找到没有自定义查询(例如,不User.where('profile_id IS NULL')),或在应用程序处理它谁没有配置文件的所有用户?Rails的:寻找模型缺少HAS_ONE记录

由于用户和配置文件之间的关联是Rails已知的,我不想重述它。我想保持这种干爽。模型之间的实际连接比这个简单的例子(使用键和类名)更复杂,并且将来可能会发生变化。

+0

查询'User'模型的表而不构建Rails本身不提供的查询的方法?这不是很清楚。 – deefour

+1

为了便于阅读,无论您进行的自定义查询都可以包含到“作用域”中。 – tadman

+0

'scope:without_profile,where(profile_id:nil)' – melekes

回答

1

由于@tadman & @antonk已经说了,你可能想使用scope

scope :without_profile, where(profile_id: nil) 

编辑: 要回答@大卫毛的问题:你可以通过调用User.without_profile使用它,返回AR协会的所有用户的nil:profile_id

@DriverDan:那么我真的不确定你在问什么。问更多的细节问题,我们可以尝试回答它!

+0

以及如何使用它? –

+0

我接受这个,因为这是我的简单示例的合理解决方案。 但是,当两个模型之间的关系更复杂时,例如使用primary_key,我不认为它是正确的解决方案。这将需要在正好与我想要避免的范围内重新加入JOIN。 – DriverDan