我正在使用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,或者由于模型中定义的关系,这应该自动完成?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
要使 current_user 正常工作,您需要将before_filter :authenticate_user!
添加到控制器。如果这不起作用可能是csrf
问题,你可以解决
= csrf_meta_tags
在你的布局中。