Ruby on rails 如何将信息保存到design.sessions#destroy上的模型?

Ruby on rails 如何将信息保存到design.sessions#destroy上的模型?,ruby-on-rails,devise,piggybak,Ruby On Rails,Devise,Piggybak,我正在使用Desive和Piggybak来存储用户购物车,Piggybak使用一个名为cart的cookie来存储用户购物车。问题是Piggybak不会在用户注销时销毁cookie,因此,如果我与其他用户登录,它将使用相同的cookie,因此,使用相同的购物车 我想解决将cookie值存储到我的用户模型中的问题,使它能够在另一个登录时取回他的购物车。我所做的是覆盖designe.sessions#destroy方法,以在用户上保存cookie值并销毁cookie: # app/controlle

我正在使用Desive和Piggybak来存储用户购物车,Piggybak使用一个名为cart的cookie来存储用户购物车。问题是Piggybak不会在用户注销时销毁cookie,因此,如果我与其他用户登录,它将使用相同的cookie,因此,使用相同的购物车

我想解决将cookie值存储到我的用户模型中的问题,使它能够在另一个登录时取回他的购物车。我所做的是覆盖designe.sessions#destroy方法,以在用户上保存cookie值并销毁cookie:

# app/controllers/users/sessions_controller.rb

class Users::SessionsController < Devise::SessionsController

  def destroy
    current_user.add_cart_cookie(cookies['cart']['value'])
    cookies['cart'] = { value: '', path: '/' }
    super
  end
end
并创建方法
add\u cart\u cookie
到我的用户模型:

# app/models/user.rb

class User < ActiveRecord::Base

...

  def add_cart_cookie(value)
    self.cart_cookie = value
  end

...

end
#app/models/user.rb
类用户

但这不起作用,它会破坏cookie,但不会将其保存在用户模型上。为什么会发生这种情况?

成功了,谢谢你@Marian

我所做的是将我的
add\u cookie\u cart
方法更改为接受另一个参数:

# app/models/user.rb

class User < ActiveRecord::Base

...

  def add_cart_cookie(value, password)
    self.cart_cookie = value
    self.password = password
    self.password_confirmation = password
    self.save
  end

...

end
#app/models/user.rb
类用户
并相应地更改了我的会话#销毁:

class Users::SessionsController < Devise::SessionsController

  def destroy
    current_user.add_cart_cookie(cookies['cart']['value'], current_user.password)
    cookies['cart'] = { value: '', path: '/' }
    super
  end
end
class用户::sessioncontroller
您必须保存用户实例(在您的
添加购物车\u cookie
方法中。我是否必须使用
自我保存!
?在保存之前,我如何传递身份验证的密码和密码确认?
class Users::SessionsController < Devise::SessionsController

  def destroy
    current_user.add_cart_cookie(cookies['cart']['value'], current_user.password)
    cookies['cart'] = { value: '', path: '/' }
    super
  end
end