用户返回零。不知道该怎么办

时间:2014-01-29 07:19:48

标签: ruby-on-rails authentication devise

我正在尝试显示发布项目的用户的名称。唯一的问题是Item.last.user == nil

我已经在模型中设置了has_manybelongs_to关系。

这是项目控制器的params哈希:

def item_params
  params.require(:item).permit(:name, :quantity, :boughtfor, :soldfor, :user_id)
end

请注意,我:user_id就在那里。

项目架构:

  create_table "items", force: true do |t|
    t.string   "name"
    t.integer  "quantity"
    t.integer  "boughtfor"
    t.integer  "soldfor"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "user_id"
  end

如何让用户不是nil

更新

在项目控制器中创建操作:

  def create
    @item = Item.new(item_params)

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

2 个答案:

答案 0 :(得分:3)

这样做

@item = current_user.items.new(item_params)

这将获取当前用户的ID。 current_user指的是已登录的用户

答案 1 :(得分:0)

创建迁移时,您可以设置

 t.integer  "user_id", null: false

或者您可以在数据库级别定义关系:

t.belongs_to :user, index: true

确保在尝试创建项目时确实拥有用户ID。你在用表格吗?你是如何抓住用户ID的?它来自设计吗?