2009-12-22 4 views
2

Я ищу создать приложение Rails с тремя моделями. Одна модель представляет собой автомобили, другая представляет цвета автомобилей, которые можно покрасить, а третий представляет собой заказ на автомобиль в некотором цвете. Каков наилучший способ структурирования отношений между этими моделями?Лучший способ моделирования этих отношений в Rails

ответ

3

Это довольно простой материал. Я предлагаю вам подробно ознакомиться с Rails guide об ассоциациях Active Record. Для вас:

class Car < ActiveRecord::Base 
    has_many :orders 
    belongs_to :color 
end 

class Color < ActiveRecord::Base 
    has_many :cars 
    has_many :orders 
end 

class Order < ActiveRecord::Base 
    belongs_to :car 
    belongs_to :color 
end 
+0

Неплохой старт, возможно, необходимо добавить подтверждение для заказа, чтобы Цвет в заказе совместим с выбранным автомобилем. – EmFi

0

Я подумал об этом несколько иначе, чем Janteh. Когда вы размещаете заказ, вы заказываете конкретный автомобиль определенного цвета, не так ли? Так что я думаю, что автомобили и цвет должны быть связаны по порядку, что-то вроде этого:

class Car < ActiveRecord::Base 
    has_many :orders 
end 

class Color < ActiveRecord::Base 
    has_many :orders 
end 

class Order < ActiveRecord::Base 
    belongs_to :car 
    belongs_to :color 
end 

Это в основном то, что предложил Janteh, но я не связывал автомобиль непосредственно с определенным цветом.

+0

Но вы также хотите знать, в каких цветах вы можете заказать определенный автомобиль, не так ли? – Janteh

0

Я бы предпочел has_many: через отношения. Таким образом, вы можете получить доступ ко всем цветам, заказанным определенным автомобилем, и все автомобили, заказанные в определенном цвете.

class Car < ActiveRecord::Base 
    has_many :orders 
    has_many :colors, :through => :orders 
end 

class Color < ActiveRecord::Base 
    has_many :orders 
    has_many :cars, :through => :orders 
end 

class Order < ActiveRecord::Base 
    belongs_to :car 
    belongs_to :color 
end 
Смежные вопросы