2010-04-15 2 views
1

У меня есть эти модели:См аналогичных связанных моделей с общим названием

class Bill < ActiveRecord::Base 
    has_many :calls 
    has_many :text_messages 
end 

class Call < ActiveRecord::Base 
    belongs_to :bill 
end 

class TextMessage < ActiveRecord::Base 
    belongs_to :bill 
end 

Теперь в моей области вызовов и текстовых сообщений, оба «того же рода вещи» - то есть, они оба «элементы счета». Поэтому я бы хотел, чтобы some_bill.bill_items возвращал все вызовы и текстовые сообщения, связанные с этим счетом. Каков наилучший способ сделать это?

ответ

0

Вы можете создать новую модель, BillItems и вставить ее в цепочку отношений. Затем вы можете получить доступ ко всем элементам векселя коллективно или к отдельным сообщениям/текстовым сообщениям через многосвязанные отношения. Другая возможность - посмотреть на single table inheritance.

+0

Что вы подразумеваете под словом "Вставить его в цепочку отношений"? Таким образом, Bills будут иметь несколько билл-тетов, каждый BillItem has_one call/text_message (через полиморфные ассоциации?), А Bills are_many: calls /: text_messages: through =>: bill_item? –

+0

@Horace У тебя это получилось. –

Смежные вопросы