我堅持了幾個小時。這可能是一個快速解決方案,但現在我的大腦過熱了。好吧,在這裏。如何從Rails 2中不包含特定項目的多對多關係中選擇特定記錄?
我有Session和SessionType模型,它們之間具有多對多的關係,如下所示。
class Session < ActiveRecord::Base
...
has_and_belongs_to_many :session_types
...
end
class SessionType < ActiveRecord::Base
...
has_and_belongs_to_many :sessions
...
end
我想要的是得到它不包含任何特定session_type,如:會話,
Session.find(:all, :joins => [:session_types], :conditions => ["session_types.id <> 44"])
它不爲我工作,因爲上面的查詢仍將給我由於多對多關係的性質,在其許多關聯中具有session_types.id「44」的會話。
另外下面的mysql代碼也不起作用。
select sessions.* from sessions
INNER JOIN `session_types_sessions` ON `session_types_sessions`.session_id = `sessions`.id
WHERE ( session_types_sessions.session_type_id NOT IN (44))
GROUP BY sessions.id
任何幫助將不勝感激。
謝謝。
是的,它工作正常,有點語法變化,因爲我有一些關於連接的語法錯誤。 session_types_44 =會話。find:(:all,:joins =>:session_types,:conditions => {:「session_types.id」=> 44})。 )「,session_types_44.collect {| s | s.id}]) – 2010-12-14 16:45:54