0

我有一個頁面,顯示一個用戶的線程列表,無論這個線程是由它們啓動還是它們是一個啓動的接收者。是否可以在rails上將ruby關聯在一起?

這裏是我的模型:

has_many :threads_as_starter, :class_name => 'MessageThread', :foreign_key => 'sender_id' 
    has_many :threads_as_recipient, :class_name => 'MessageThread', :foreign_key => 'recipient_id' 

我想要做的就是確定我可以在一個以實例變量,並通過循環顯示的CURRENT_USER的線程我的視圖頁面上存儲的方法。

當我運行:MessageThread.where( 'SENDER_ID OR recipient_id =?',4)

1.9.3p0 :045 > MessageThread.where('sender_id OR recipient_id = ?', 4) 
    MessageThread Load (0.4ms) SELECT `message_threads`.* FROM `message_threads` WHERE (sender_id OR recipient_id = 4) ORDER BY message_threads.created_at DESC 
=> [#<MessageThread id: 89, message_id: 219, sender_id: 4, recipient_id: 38, status: 0, created_at: "2012-02-15 12:26:17", updated_at: "2012-02-15 12:26:17">, #<MessageThread id: 88, message_id: 218, sender_id: 2, recipient_id: 4, status: 0, created_at: "2012-02-14 13:41:19", updated_at: "2012-02-14 13:41:19">, #<MessageThread id: 87, message_id: 210, sender_id: 1, recipient_id: 2, status: 0, created_at: "2012-02-14 13:31:12", updated_at: "2012-02-14 13:31:12">] 

我很困惑,爲什麼它顯示我行,其中的發送者或接收者ID不等於到4.

什麼查詢會返回sender_id爲4的所有結果,而且還會返回recipient_id爲4的所有結果?我需要讓登錄用戶查看他們當前所有線程的列表。那些由他們開始的和沒有開始的。

用戶A和B在message_threads表中只有1個線程,但他們中的任何一個都可以有更多的線程但用戶不同,但每個用戶只有1個。我使用這個message_thread表來引用在我使用acts_as_tree gem的消息表中的對話。

必須有一種方法可以將threads_as_starter和threads_as_recipient分組,例如all_threads然後調用current_user.all_threads返回全部。

在此先感謝 親切的問候

回答

0
where('sender_id OR recipient_id = ?', 4) 

應該

where('sender_id = ? OR recipient_id = ?', 4) 

或可能

where('sender_id = ? OR recipient_id = ?', 4, 4) 
+0

十分感謝,在這裏( 'SENDER_ID =?OR recipient_id =?',4 ,4)工作 – LondonGuy 2012-02-15 13:55:37

相關問題