我想创建一个结合了其他两个关联的附加关联。
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
有一个名为faxes的连接表,其字段为friend_id和enemy_id
我想用rails的方式说:
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 :(得分: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
的内容