2011-12-25 43 views
0

所有我是新的軌道。 我想銷燬在分組表中有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 

請一些幫助。

在此先感謝。

+0

它是否肯定會觸發該控制器操作?回溯顯示錯誤發生在哪條線上?組播控制器上是否有過濾器? – 2011-12-25 18:09:33

+0

什麼是current_user方法和/或您使用的是什麼自動系統? – andrewpthorp 2011-12-25 19:30:17

+0

謝謝,我已經更新了我的問題內容以添加「錯誤日誌」和current_user方法。請看這個。 – nobinobiru 2011-12-26 05:09:16

回答

0

如果有錯誤說could not find user with id=1那麼沒有id = 1的用戶。 Ofte我們刪除/銷燬用戶。

在軌當你破壞與ID = 1記錄並創建另一個記錄,然後將新創建的記錄ID不會是1。你可能會遇到這種情況。

此外,您在模型協會是這樣的,我猜測::

用戶模型

class User < ActiveRecord::Base

has_many :groups#不分組

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

,因爲用戶的has_many組和不分組。

Read More about naming conventions

+0

謝謝你問我的問題。但分組是中間表。所以user.rb'has_many:groups,:through =>:groupings',group.rb'has_many:through =>:groupings',並且參加動作,刪除動作的反例如下... '@user.groupings。創建!(:group_id =>組) – nobinobiru 2011-12-26 01:30:41

相關問題