2013-11-28 65 views
0

我想创建一个组合其他两个关联的附加关联。如何将两个'has_many_through'关联加入另一个关联?

class Person < ActiveRecord::Base 
    has_many :cats 
    has_many :dogs 
    has_many :pets(dogs and cats) ??? 
end 

有没有人知道一个很好的方法来实现这个目标?

编辑:

我需要拉出来的记录连接表,而不管他们是在什么样的列这纯粹是一个优化问题,这样我不需要ping到两次分贝为每个协会。

编辑:

我选择了一组差数据的例子。

class Person < ActiveRecord::Base 
    has_many :senders (is a person object) 
    has_many :receivers (is a person object) 
    has_many :contacts(friends and enemies) ??? 
end 

。那些领域friend_id和enemy_id

我想要的轨道的方式说所谓的传真连接表:

SELECT DISTINCT persons.* 
    FROM persons 
    WHERE persons.id IN 
    ( 
    SELECT faxes.sender_id 
     WHERE fakes.receiver_id = (?) 
)  
    OR persons.id IN 
    ( 
    SELECT faxes.receiver_id 
     WHERE fakes.sender_id = (?) 
) 
+0

你是什么意思平的分贝两次?你的意思是在多个select语句中吗?如果是这样,用单一选择检索猫和狗的唯一方法是如果它们使用STI存储在同一个表中。 –

回答

0

你应该利用类继承的。

class Person < ActiveRecord::Base 
    has_many :pets 
end 

class Pets < ActiveRecord::Base 
    belongs_to :person 
end 

class Dog < Pet 
end 

class Cat < Pet 
end 

类似的东西这个SO Post

+0

我需要从连接表中拉出记录,而不管它们在哪个列。这纯粹是一个优化问题,所以我不需要为每个关联ping两次db。 –

相关问题