2016-01-21 2 views
0

Я младший разработчик, который только что взял первый проект рельсов. Есть много препятствий, с которыми я сталкиваюсь, но многому учусь. До сих пор мне удалось найти множество пользователей в Devise и все, что было хорошо. Но полу уверен в авторизации. Все еще учись, когда я ухожу, и я уверен, что смогу это понять.Руководство по моделированию Rails, ассоциация и логика

Но единственный момент кирпичной стены, который у меня есть на прошлой неделе, - это моделирование моего приложения для части заказа. Вот немного резюме приложения я работаю над:

  1. Его B2B
  2. Типы пользователей розничный торговец и поставщик
  3. Retailer размещает заказ с поставщиком
  4. Существует только один продукт с 3 различными типы и т. д., product_type1, product_type2, product_type3
  5. поставщик Обновляет цены на типы товаров каждый день, а розничный торговец видит текущую цену на своей приборной панели
  6. Поставщик также имеет формулу для каждого продукта цены для каждого отдельного продавца.

Например, его базовая цена + маржа, его разность для каждого продавца.

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

Что мне нужно?

Модель продукта? С ценой и типом?

Отдельная модель формулы?

+1

Проведите некоторое время и завершите [Rails Guides] (http://guides.rubyonrails.org/getting_started.html) от начала до конца и выполните все приведенные примеры. –

+0

Добро пожаловать в переполнение стека. Я настоятельно рекомендую прочитать http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ и http://catb.org/esr/faqs/smart-questions.html. Кроме того, программисты проводят много времени, исследуя и пытаясь спросить; Много времени. Мы ожидаем от наших сверстников; http://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users –

ответ

2

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

User модель:

class User < ActiveRecord::Base 
    # A user is a registered person in our system 
    # Maybe he has 1/many retailers or suppliers 
    has_many :retailers 
    has_many :suppliers 
end 

Order модель:

class Order < ActiveRecord::Base 
    # An order was placed for supplier by retailer 
    belongs_to :retailer 
    belongs_to :supplier 
    # An order may have so many products, we use product_capture 
    # because the product price will be changed frequently 
    # product_capture is the product with captured price 
    # at the moment an order was placed 
    has_many :product_captures 
end 

Product модель:

class Product < ActiveRecord::Base 
    belongs_to :retailer 
    has_many :product_captures 
    # Custom type for the product which is not in type 1, 2, 3 
    enum types: [:type_1, :type_2, :type_3, :custom] 
end 

ProductCapture модель:

class ProductCapture < ActiveRecord::Base 
    belongs_to :product 
    attr_accessible :base_price, :margin 

    def price 
    price + margin 
    end 
end 

....other models

Так идея:

  1. Пользователь может иметь много розничных продавцов или поставщиков (Проверьте требования для этого, я не уверен, это правильно или нет в вашем случае)
  2. Мы всегда создаем заказ для розничной торговли и поставщика с лат это гарантирует, что последняя цена будет применена.
  3. Когда продавец обновляет свою цену (базовая цена + маржа), мы создаем новый , который станет последним, все старые снимки все еще находятся в базе данных, поскольку старые заказы все еще используют его.
+1

Спасибо. Это именно то, что мне нужно. Спасибо, что потратили свое время, объясняя это. Также поставщик обновляет цену для продавца. – suyesh

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