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用户对象时。我想只有登录用户才可以