当我从分组表中销毁用户时,为什么会发生无法找到用户的错误

时间:2011-12-25 13:49:56

标签: ruby-on-rails ruby

所有我都是新手。 我想销毁在分组表中有group_id的用户。

我的源代码在这里。

GroupsController

def leave
  @user = current_user
  @group = Group.find(params[:id])
  @user.groupings.find_by_group_id(@group).destroy
  redirect_to :back , notice: "Destroy!"
end

lists.html.haml

 %td= link_to("Destroy",leave_group_path(:id => group),:confirm => "Are you       sure",:method => :delete)

当我点击“销毁”按钮时,会发生Couldn't find User with id=1错误 我想只销毁分组表,但为什么找不到current_user.I不要删除current_user。

错误日志就是

    app/controllers/application_controller.rb:6:in `current_user'

并且current_user提供了OmniAuth插件的helper_method。

current_user是在此之后实现的。

class ApplicationController < ActionController::Base
  protect_from_forgery
  private

  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  helper_method :current_user
end

请一些帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果出现could not find user with id=1错误,则表示没有id = 1的用户。 我们删除/销毁用户。

当你销毁id = 1 的记录并创建另一条记录时,在rails中,新创建的记录 id将不是1 。这可能发生在你身上。

另外,你在模特中的关联就是这个,我猜::

用户模型

class User < ActiveRecord::Base

has_many :groups#not 分组

end

问题中提到的群组模型#。

class Group < ActiveRecord::Base

belongs_to :user

end

这意味着::

@user.groupings.find_by_group_id(@group).destroy无法正确。

而是试试这个::

@user.groups.find_by_group_id(@group).destroy

因为,用户有多个组而不是分组。

Read More about naming conventions