2012-02-23 18 views
1

rails appでグループを作成していますので、データベースにユーザーを保存する必要があります。ページ。私はcurrent_userを使用することができません。これは、ログインごとに変更されるためです。以下は私が使用しているコードで、結果はActiveRecord::RecordNotFound in GroupsControllerです。だから、私はどのように私はこの仕事を正しく行うには、データベースにユーザーを保存する(正しいことなら)知っている必要がありますか、またはそれを正しく動作させる方法は?グループを作成し、ユーザーをデータベースに保存する必要があります。

ユーザモデル

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me 

    has_many :groups 
end 

群モデル

class Group < ActiveRecord::Base 
    belongs_to :user 
end 

工夫ユーザ移動(必要な部分のみ)

t.has_many:グループ

グループの移行

t.belongs_to :user 

グループコントローラメソッド

def create 
    @user = User.find(params[:id]) 
    @group = @user.groups.build(params[:id]) 
    respond_to do |format| 
     if @group.save 
     format.html { redirect_to @group, notice: 'Group was successfully created.' } 
     format.json { render json: @group, status: :created, location: @group } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @group.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

グループコントローラの新しい方法

def new 
    @user = User.find(params[:id]) 
    @group = @user.groups.build(params[:id]) 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @group } 
    end 
    end 

答えて

0

を作成し、ここであなたのセットアップにはあまり意味がありません。新しいアクションでは、ユーザーを検索しないでください。あなたのルーティングが正しく使用されている場合は、parma [:id]を取得することさえできません。同じ(名前が言うように)それを検索しない新しいユーザーレコードを作成する必要があります作成メソッドになります。

def new 
    @user = User.new 
    ... # no building of groups here, since record is still empty, does not even have an id 
end 

のようなだけ(保存せずに)新しいレコードを作成する必要があり、新たなアクションが、今では、ユーザーの後new.html.erb

で入力フォームをレンダリングするために、このユーザオブジェクトを使用する必要があります新しいフォームを送信すると、彼は作成アクションで終了します。今度は新しいユーザーを作成し、データベースに実際に保存します。

def create 
    @user = User.new(params[:user]) 
    if @user.save 
    # maybe create some groups here 
    redirect_to @user 
    else 
    render :action => "new" 
    end 
end 

この点は、開発者とユーザーの認証にはあまり関係ありません。

これは最も一般的なプロセスを示しています(良いRoRチュートリアルで見つけられるように) それ以外の場合は、正確に何をしたいのか、これが何をしなければならないのかについての明確な質問はありませんdeviseとcurrent_userで ほとんどの場合、ユーザーが自分の電子メール、グループ、およびその他のユーザー固有のデータを見ることを可能にするコントローラとアクションがあります。この場合、これらのコントローラは、ログイン後にcurrent_userを使用する必要があります。 多くのプロジェクトには、特定のユーザーがユーザーとそのデータの一覧を表示できるようにする管理インターフェイス用の追加機能があります。この場合、current_userを使用して、ユーザーに管理者権限があることを確認し、管理されたユーザーのデータを表示するための検索機能と検索機能を使用します。

+0

私は新しいユーザーをここで作成しようとしていません。既存のユーザーを新しいグループに関連付けようとしています。それ、どうやったら出来るの –

関連する問題