2012-12-10 61 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