3

使用Rails 3.0.7,並具有以下4種模式:錯誤與單表繼承(STI)和has_and_belongs_to_many(HABTM)的關聯

class User < ActiveRecord::Base 
end 

class Administrator < User 
    has_and_belongs_to_many :clients 
end 

class Client < ActiveRecord::Base 
    has_and_belongs_to_many :administrators 
    has_and_belongs_to_many :meetings 
end 

class Meeting < ActiveRecord::Base 
    has_and_belongs_to_many :clients 

    def self.foo 
    self.joins(:clients => :administrators) 
    end 
end 

呼叫:

Meeting.foo.to_sql 

生產:

SELECT meetings.* 
FROM meetings 
INNER JOIN clients_meetings ON clients_meetings.event_id = meetings.id 
INNER JOIN clients ON clients.id = clients_meetings.child_id 
INNER JOIN clients_administrators ON clients_administrators.child_id = clients.id 
INNER JOIN users ON users.type = 'Administrator' 

但似乎錯過了「clients_administrators」和「users」之間的最終連接關係。我認爲SQL的最後一行應爲:

INNER JOIN users ON users.id = clients_administrators.user_id 
WHERE users.type = 'Administrator' 

這是一個錯誤?或者我誤解了一些東西?

感謝

回答