Rails 3 Создание объекта во внешней модели - PullRequest
0 голосов
/ 01 июня 2011

У меня есть объект транзакции, и я хочу:

  1. Проверить, существует ли сеанс корзины.
  2. Если да, сопоставьте транзакцию с идентификатором этой корзины из сеанса.*
  3. Если нет, создайте новый объект Cart и присвойте его идентификатор переменной сеанса.

Отношение:

Cart has_many Transactions
Transaction belongs_to Cart

Мой вопрос: как вы/ Каков наилучший способ создания объекта Cart и связанного сеанса из контроллера транзакций?

Я пытался что-то подобное в новом действии транзакции:

@cart = Cart.new

И это вДействие создания транзакции:

@cart = Cart.new(params[:cart])
session[:cart] = @cart.id

Но это не создает сеанс или объект корзины.И при поиске в Google я не смог найти документацию по этому типу вещей.Кто-нибудь знает, как это делается правильно?

1 Ответ

2 голосов
/ 02 июня 2011
Cart.new

... будет только создавать новую корзину, но не будет сохранять в базе данных. Объект Cart необходимо сохранить в базе данных, если он будет использоваться в разных запросах.

Используйте это, чтобы сохранить объект Корзина:

Cart.create(params[:cart])

или

@cart.save!

Для этого:

session[:cart] = @cart.id

... вы поступили правильно, сохранив идентификатор в сеансе :) Но учтите, что вам нужно получать его снова при каждом запросе. Таким образом, вы можете добавить помощника в свой application_controller.rb что-то вроде:

def current_cart
  Cart.find_by_id(session[:cart])
end

.... который может вернуть nil корзину.

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