Ruby on Rails - Создать заказ из цитаты - PullRequest
0 голосов
/ 23 ноября 2010

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

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

Каков наилучший способ сделать это в Ruby on Rails, сохранять ли данные формы в сеансе, а затем использовать этот сеанс для создания заказа, если пользователь решит создать заказ из предложения?

Вот соответствующая схема:

create_table "orders", :force => true do |t|
  t.string   "status"
  t.integer  "customer_id"
  t.datetime "created_at"
  t.datetime "updated_at"
end

create_table "order_items", :force => true do |t|
  t.integer "order_id"
  t.integer "height"
  t.integer "width"
  t.string  "mount"
  t.integer "mount_width"
  t.string  "moulding_1"
  t.string  "moulding_2"
  t.string  "moulding_3"
  t.boolean "glass"
  t.boolean "backing_board"
end

create_table "customers", :force => true do |t|
  t.string   "name"
  t.string   "address"
  t.string   "tel_number"
  t.string   "email_address"
  t.datetime "created_at"
  t.datetime "updated_at"
end

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Я бы вообще не создавал объект из цитаты.

Я бы создал другое действие для вычисления кавычки, а затем, вероятно, использовал бы ajax для вызова этого при каждом изменении значения поля формы.Отдельная кнопка и отдельное действие создадут заказ из формы напрямую.

0 голосов
/ 23 ноября 2010

Предпочтительный способ хранения данных сеанса в RoR - это хранилище файлов cookie.Магазин печенья не очень большой.По этой причине вам, вероятно, не захочется пытаться хранить много данных в сеансе.

Подумайте над тем, чтобы customer_id для заказов мог быть обнуляемым.Затем вы можете сохранить в куки-файле хеш, например, ": order_id =>".Это позволит вам вспомнить, что анонимный пользователь выбрал, даже если он покинет сайт и вернется.Это также отлично подходит для того, чтобы иметь возможность измерить уровень вашего истощения во время процесса регистрации (сколько человек получили предложение, а затем никогда не возвращались).

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

0 голосов
/ 23 ноября 2010

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

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

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