使用Devise登录和current_user的Rails网上商店

时间:2015-12-01 16:54:48

标签: ruby-on-rails devise

我正在使用Devise作为登录宝石在Rails中创建一个网上商店应用程序。结构如下: 具有basket_id列的用户表,在其模型中我设置了has_one :basket 购物篮belongs_to :user

在我的basket_controller.rb中,我想使用create方法获取用户

  # POST /baskets
  # POST /baskets.json
 def create
   @basket = Basket.new(basket_params)
   @basket.user_id = current_user.id

   respond_to do |format|
     if @basket.save
       format.html { redirect_to @basket, notice: 'Basket was successfully created.' }
       format.json { render :show, status: :created, location: @basket }
    else
       format.html { render :new }
       format.json { render json: @basket.errors, status: :unprocessable_entity }
    end
  end

问题是找不到应由Devise自动生成的current_user方法,因此未设置Baskets表中的user_id。另外我不知道在Users表中我将在哪里设置basket_id,或者由于模型中定义的关系,这应该自动完成?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

要使 current_user 正常工作,您需要将before_filter :authenticate_user!添加到控制器。如果这不起作用可能是csrf问题,你可以解决

= csrf_meta_tags

在你的布局中。