如果模型用户HAS_ONE档案,有一个简单的方法找到没有自定义查询(例如,不User.where('profile_id IS NULL')
),或在应用程序处理它谁没有配置文件的所有用户?Rails的:寻找模型缺少HAS_ONE记录
由于用户和配置文件之间的关联是Rails已知的,我不想重述它。我想保持这种干爽。模型之间的实际连接比这个简单的例子(使用键和类名)更复杂,并且将来可能会发生变化。
如果模型用户HAS_ONE档案,有一个简单的方法找到没有自定义查询(例如,不User.where('profile_id IS NULL')
),或在应用程序处理它谁没有配置文件的所有用户?Rails的:寻找模型缺少HAS_ONE记录
由于用户和配置文件之间的关联是Rails已知的,我不想重述它。我想保持这种干爽。模型之间的实际连接比这个简单的例子(使用键和类名)更复杂,并且将来可能会发生变化。
由于@tadman & @antonk已经说了,你可能想使用scope
:
scope :without_profile, where(profile_id: nil)
编辑: 要回答@大卫毛的问题:你可以通过调用User.without_profile
使用它,返回AR协会的所有用户的nil
:profile_id
。
@DriverDan:那么我真的不确定你在问什么。问更多的细节问题,我们可以尝试回答它!
以及如何使用它? –
我接受这个,因为这是我的简单示例的合理解决方案。 但是,当两个模型之间的关系更复杂时,例如使用primary_key,我不认为它是正确的解决方案。这将需要在正好与我想要避免的范围内重新加入JOIN。 – DriverDan
查询'User'模型的表而不构建Rails本身不提供的查询的方法?这不是很清楚。 – deefour
为了便于阅读,无论您进行的自定义查询都可以包含到“作用域”中。 – tadman
'scope:without_profile,where(profile_id:nil)' – melekes