0

В настоящее время обучение Rails, так что будьте нежны.Rails 3.0 has_many и принадлежит к головной боли ассоциаций.

Я хочу, чтобы проверить, что я получаю это право, прежде чем я перебарщивать:

Создание приложение, которое позволяет нашим «Клиенты», чтобы войти, и создать цитату. «Поставщики» (в этом случае владельцы конференц-залов) могут посмотреть кавычки и ответить на них предложением, которое клиент сможет просмотреть. У каждой учетной записи поставщика будет возможность иметь одну или несколько «Участков», которые принадлежат ей (например, если они используют целую сеть мест), и каждое сделанное предложение будет осуществляться из определенного места.

Другие сложные проблемы, с которыми я, вероятно, столкнусь позже, действительно ли это выглядит так, насколько это касается отношений?

P.S Я понимаю, что ниже на самом деле не код, который будет работать, я просто сложил его таким образом, пока я пытаюсь обогнуть его.

Customer (will be a type of user) 
has_many :quotes 
has_many :proposals, :through => :venue 

Supplier (will be a type of user) 
has_many :venues 
has_many :proposals, :through => :venue 

Venue 
belongs_to :supplier 
has_many Proposals 

Quote 
belongs_to :customer 

Proposal 
belongs_to :venue 

И основные таблицы:

Customer 
    id 

Supplier 
    id 

Quote 
    id 
    customer_id 

Venue 
    id 
    supplier_id 

Proposal 
    id 
    venue_id 

Там может быть гораздо лучший способ сделать это, используя has_ones и has_and_belongs_to_many и т.д., но я понятия не имею.

Благодаря

+0

Как вы хотите '' клиентов, чтобы быть связано с ' venues'? Потому что, если вы хотите, чтобы «клиенты» имели множество «предложений» через «места проведения», «клиенты» также должны иметь множество «мест». –

+0

Клиенты могут выбирать предложения из любого места - возможно, мне не нужны сквозные? Могу ли я удалить оба из них? –

+0

Итак, вы должны удалить ': through' хотя бы из' Customer has_many: offers'. Как вы хотите, чтобы ваши «поставщики» были связаны с предложениями? –

ответ

0

Хорошо, так что я думаю, что это должно выглядеть следующим образом:

Customer 
    has_many :quotes 
    has_many :proposals 

Supplier 
    has_many :venues 
    has_many :proposals, :through => :venues 

Venue 
    belongs_to :supplier 
    has_many :proposals 

Quote 
    belongs_to :customer 

Proposal 
    belongs_to :venue 
    belongs_to :customer 

и в БД схеме:

Customer 
    id 

Supplier 
    id 

Quote 
    id 
    customer_id 

Venue 
    id 
    supplier_id 

Proposal 
    id 
    venue_id 
    customer_id