2015-08-23 89 views
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 
      ; ") 

但當然我有限的大腦容量無法應對,這也不管用。任何幫助非常感謝。

回答

0

這會給你你想要的結果是根據查詢

Notice.joins('left join commentrelationships ON notices.id = commentrelationships.commenter_id').where('commentrelationships.commentee_id IS NULL') 

是那些不具有通知active_comment_relationship

相關問題