Комплексное ценообразование на продукцию в рельсах - PullRequest
2 голосов
/ 15 февраля 2012

Rails новичок здесь, поэтому, пожалуйста, не бейте слишком сильно, когда вы видите, с чем у меня проблемы (вероятно, это должно быть просто!)

Я работаю над приложением, в котором клиентам предлагаются услуги на основе продуктов (VPS) для продажи. Хотя количество реальных продуктов минимально, они легко настраиваются, а цены зависят от нескольких факторов:

  • Ram / HDD Размер
  • Расположение сервера (который также может изменить валюту)
  • Любые дополнения к продукту.

У меня возникла проблема с тем, как на самом деле я бы реализовал установление цен (генерируя цену из различных факторов, добавляемых в службу пользователей) - и после общения с людьми, они дали мне разные ответы, что оставил меня еще более смущенным.

Если это поможет, у меня есть такие модели:

class Product < ActiveRecord::Base
  has_many :services
  has_many :prices
  has_many :addons
  belongs_to :product_cat
end

class Service < ActiveRecord::Base
  belongs_to :product
  belongs_to :user
  belongs_to :location
end 

class Location < ActiveRecord::Base
  has_one :currency
  has_many :services
end

Любая помощь будет принята с благодарностью. Приветствия.

1 Ответ

1 голос
/ 15 февраля 2012

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

Насколько я понимаю, продукт может иметь несколько сервисов, и сервис может быть активным для нескольких продуктов. Это звучит как ассоциация n-> m для меня. Если это так, вы должны настроить таблицы следующим образом:

class Product < ActiveRecord::Base
  has_many :product_services
  has_many :services, through: :product_services
  has_many :prices
  has_many :addons
  belongs_to :product_cat
end

class ProductServices < ActiveRecord::Base
  belongs_to :product
  belongs_to :service
end

class Service < ActiveRecord::Base
  has_many :product_services
  has_many :products, through: :product_services
  belongs_to :user
  belongs_to :location
end 

class Location < ActiveRecord::Base
  has_one :currency
  has_many :services
end

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

product.services # returns all of the services for the specific product.
product.services.sum(:price) # returns the sum of all the individual prices of each service.

Надеюсь, это поможет вам в реализации вашего ценового решения. Это может быть сложной проблемой, но Rails предоставляет несколько способов сделать это проще. В качестве примечания, вы действительно должны взглянуть на документацию active_record, она полна информации, которая облегчит вашу жизнь.

Ура!

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