Лучший способ смоделировать эти отношения в Rails - PullRequest
2 голосов
/ 22 декабря 2009

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

Ответы [ 3 ]

3 голосов
/ 22 декабря 2009

Это довольно простые вещи. Я предлагаю вам прочитать Руководство по Rails об ассоциациях 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 голосов
/ 22 декабря 2009

Я бы предпочел 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
0 голосов
/ 22 декабря 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...