2016-02-20 2 views
0

У меня есть 3 модели: Пользователь, Заказать и автомобилей и у меня есть вопрос, потому что я не знаю, что отношения между этими моделями будут лучше. Только требование состоит в том, чтобы в каждом из них был только один автомобиль.Rails типа связи между моделями

+0

Это скорее логический вопрос, но один подход может иметь много заказов одному пользователю и одному автомобилю в один заказ. Это предполагает, что в каждом заказе есть один автомобиль ... Я предлагаю вам переформулировать свой вопрос, чтобы включить детали, и мы можем помочь вам в кодировании. – Francisco

+0

Хм, у меня есть только одно требование, когда я создаю новый порядок. Когда я завершаю заказ, больше автомобилей не может быть добавлено. – myf

+0

Это я, или ваш вопрос не совсем ясен? У вас есть 3 модели. Вы даже не можете описать отношения между ними. Итак, как мы должны дать вам ответ? Возможно, вы могли бы предоставить более двух предложений, которые описывали вашу проблему. –

ответ

2

Пользователь может иметь много заказов и, следовательно, много автомобилей через эти заказы.

class User < ActiveRecord::Base 
    has_many :orders 
    has_many :cars, through: :orders 
end 

Заказ принадлежит пользователю и автомобилю.

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

Автомобиль имеет один заказ.

class Car < ActiveRecord::Base 
    has_one :order 
end 
1

Так что вам нужно одно на одном между порядком и автомобилем, а затем вернуться к заказу и клиенту. Что-то ниже должно сделать трюк.

class Car < ActiveRecord::Base 
    has_one :order 
    has_one :customer, through: :order 
end 

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

class Customer < ActiveRecord::Base 
    has_one :order 
    has_one :car , through: :order 
end 

Но я предложу связь has_many взглядами на название модели, но вы знаете лучше вашу проблему, чем у меня.

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