2
在我的數據庫中,所有通知have_one :active_comment_relationship
。但是,並非所有這些:active_comment_relationships
都有非零commentee_id
,因爲並非所有通知都有一個清單。Rails根據has_one關係的屬性從數據庫中選擇記錄
notice.rb:
has_one :active_comment_relationship, class_name: "Commentrelationship",
foreign_key: "commenter_id",
dependent: :destroy
has_one :supernotice, through: :active_comment_relationship, source: :commentee
我想從數據庫中選擇有一個零commentee_id
所有通知。天真,我雖然這樣的事情會工作:
Notice.where('active_comment_relationship.commentee_id IS NULL')
但是,這將是太簡單了,不是嗎?我們不能這樣做。不,它看起來像我們遭受LEFT JOIN
的苦難:
find_by_sql(" SELECT *
FROM notices
LEFT JOIN commentrelationships
ON notices.id = commentrelationships.commenter_id
WHERE commentrelationships.id IS NULL
AND commentrelationships.commentee_id IS NULL
; ")
但當然我有限的大腦容量無法應對,這也不管用。任何幫助非常感謝。