2016-06-21 3 views
1

Я знаю, что есть много учебных пособий, объясняющих, как создавать отношения «has_many through» между моделями, но я думаю, что мой вопрос является техническим и концептуальным.Rails отношение между тремя путями запутанными

  • Цель состоит в том, чтобы создать веб-сайт онлайнового заказа еды
  • я создал модель Order, Элемента и OrderItem.

Отношения:

class OrderItem < ActiveRecord::Base 
    belongs_to :item, conditions: "active = true" 
    belongs_to :order 
end 

class Order < ActiveRecord::Base  
    belongs_to :user 
    has_many :order_items 
    has_many :items, through: :order_items 

    validates :status, inclusion: { in: %w(ordered completed cancelled) }  
end 

class Item < ActiveRecord::Base  
    has_and_belongs_to_many :categories, join_table: :items_categories 

    has_many :order_items 
    has_many :orders, through: :order_items 

    validates_presence_of :title, :description 
    validates :price, numericality: { :greater_than=>0 }  
end 

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

Спасибо за ваше время.

+0

¿? какова ваша команда в консоли? Я не вижу атрибут количества в модели OrderItem – DennisCastro

+0

Dennis, количество было установлено в процессе миграции, в столбце order_items есть столбец с этим именем. Как установить элементы заказа? У меня есть сомнения в этом вопросе. –

ответ

2

как этот

order = Order.new(user: @user) 
order.order_items << OrderItem.new(quantity: 100, item: Item.first) 
+0

Удивительный! Спасибо, человек :) –

+0

ваш прием. до скорого – DennisCastro

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