Ruby on rails 用户返回nil。不知道该怎么办

Ruby on rails 用户返回nil。不知道该怎么办,ruby-on-rails,authentication,devise,Ruby On Rails,Authentication,Devise,我正在尝试显示发布项目的用户的名称。唯一的问题是项.last.user=nil 我已经在模型中设置了有许多和属于关系 以下是items控制器的参数散列: def item_params params.require(:item).permit(:name, :quantity, :boughtfor, :soldfor, :user_id) end def create @item = Item.new(item_params) respond_to do |form

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

我已经在模型中设置了
有许多
属于
关系

以下是items控制器的参数散列:

def item_params
  params.require(:item).permit(:name, :quantity, :boughtfor, :soldfor, :user_id)
end
  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
请注意,I
:user\u 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 item_params
  params.require(:item).permit(:name, :quantity, :boughtfor, :soldfor, :user_id)
end
  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

创建迁移时,可以设置

 t.integer  "user_id", null: false
也可以在数据库级别定义关系:

t.belongs_to :user, index: true

确保您在尝试创建项目时实际拥有用户id。你在用表格吗?您如何获取用户id?是否来自Deviate?

创建迁移时,您可以进行设置

 t.integer  "user_id", null: false
也可以在数据库级别定义关系:

t.belongs_to :user, index: true

确保您在尝试创建项目时实际拥有用户id。你在用表格吗?您如何获取用户id?是否来自Deviate?

创建迁移时,您可以进行设置

 t.integer  "user_id", null: false
也可以在数据库级别定义关系:

t.belongs_to :user, index: true

确保您在尝试创建项目时实际拥有用户id。你在用表格吗?您如何获取用户id?是否来自Deviate?

创建迁移时,您可以进行设置

 t.integer  "user_id", null: false
也可以在数据库级别定义关系:

t.belongs_to :user, index: true
确保您在尝试创建项目时实际拥有用户id。你在用表格吗?您如何获取用户id?这是Deviate的吗?

这样做

@item = current_user.items.new(item_params)
这将获取当前用户的id。当前用户是指已登录的用户

@item = current_user.items.new(item_params)
这将获取当前用户的id。当前用户是指已登录的用户

@item = current_user.items.new(item_params)
这将获取当前用户的id。当前用户是指已登录的用户

@item = current_user.items.new(item_params)



这将获取当前用户的id。当前用户是指登录用户

一件有帮助的事情是对
进行验证,并对数据库表进行约束,以确保始终设置用户。检查Rails服务器日志输出。您是否看到有关未经允许的参数的任何警告?您确定
用户id
设置正确吗?另外,您的
项目
新表单是什么样子的?它是一个嵌套表单吗?有一件事会有所帮助,那就是对
项进行验证,并对数据库表进行约束,以确保用户始终处于设置状态。检查Rails服务器日志输出。您是否看到有关未经允许的参数的任何警告?您确定
用户id
设置正确吗?另外,您的
项目
新表单是什么样子的?它是一个嵌套表单吗?有一件事会有所帮助,那就是对
项进行验证,并对数据库表进行约束,以确保用户始终处于设置状态。检查Rails服务器日志输出。您是否看到有关未经允许的参数的任何警告?您确定
用户id
设置正确吗?另外,您的
项目
新表单是什么样子的?它是一个嵌套表单吗?有一件事会有所帮助,那就是对
项进行验证,并对数据库表进行约束,以确保用户始终处于设置状态。检查Rails服务器日志输出。您是否看到有关未经允许的参数的任何警告?您确定
用户id
设置正确吗?另外,您的
项目
新表单是什么样子的?它是嵌套表单吗?这一行-
添加索引“items”[“user\u id”],名称:“index\u items\u on\u user\u id”
在代码中。它做同样的事情吗?不,您仍然需要null:false,以便数据库在没有用户的情况下不保存项目。但是,您仍然需要将其发送给用户createitem方法。向我们展示使用创建操作更新原始帖子的方法。您可以使用创建项目的表单发布视图吗?这一行-
add\u index“items”、[“user\u id”],名称:“index\u items\u on\u user\u id”
在代码中。它做同样的事情吗?不,您仍然需要null:false,以便数据库在没有用户的情况下不保存项目。但是,您仍然需要将其发送给用户createitem方法。向我们展示使用创建操作更新原始帖子的方法。您可以使用创建项目的表单发布视图吗?这一行-
add\u index“items”、[“user\u id”],名称:“index\u items\u on\u user\u id”
在代码中。它做同样的事情吗?不,您仍然需要null:false,以便数据库在没有用户的情况下不保存项目。但是,您仍然需要将其发送给用户createitem方法。向我们展示使用创建操作更新原始帖子的方法。您可以使用创建项目的表单发布视图吗?这一行-
add\u index“items”、[“user\u id”],名称:“index\u items\u on\u user\u id”
在代码中。它做同样的事情吗?不,您仍然需要null:false,以便数据库在没有用户的情况下不保存项目。但是,您仍然需要将其发送给用户createitem方法。向我们展示使用创建操作更新原始发布的方法。是否可以使用创建项目的表单发布视图?在创建操作中?是,仅当存在currentu用户对象时。我想只有登录用户才能创建项目。我说的对吗?现在就试用这个解决方案。好的,你是在用Desive进行身份验证吗?因为当前用户对象在Desive中可用。如果您正在使用任何其他gem进行身份验证,请参阅文档以查看要使用的对象,该对象指的是登录用户如果您正在使用Desive,则确实需要尝试RSB提供的解决方案。但是,请尝试首先检查是否定义了当前的_用户,否则将导致相同的问题。用户是否可以在不登录的情况下访问项目创建?在创建操作中?是,仅当存在currentu用户对象时。我想只有登录用户才可以