2017-12-15 1 views
-1

投稿とユーザーの関連付けはhabtmです。 requestパラメータのuser_idはposts_users join tableに格納されます。 current_user idとrequestパラメータから来るuser_idsを一緒に保存する必要があります。 createアクションが呼び出されると、posts_usersのjoinテーブルにuser_idsとpost idが挿入されます。has_and_belongs_toレールでの関連

def create 
     @post = Post.new(post_params) 
     @post.users << current_user # To insert current_user id into join table 
     if @post.save 
      #success message 
     else 
      #error message 
     end 
    end 


    def post_params 
     params.require(:post).permit(:content, :image, :title, user_ids: []).merge(user: current_user) 
    end 

さらに、current_userの詳細を結合テーブルに挿入する方法はありますか。

答えて

0

current_userを保存する必要はありません。 current_user_idは既にポストテーブルに保存されているので、そのポストの所有者を見つけることができます。

def post_params 
    create_params = params.require(:post).permit(:content, :image, :title, user_ids: []).merge(user: current_user) 
    create_params[:user_ids] << current_user.id 
    create_params 
    end 

これは動作するはずです:)

+0

私はすべてのユーザー(投稿を作成した人と、その投稿に関連付けられている人)を1つのテーブルに入れる必要があります – Aarthi

+0

あなたのユースケースであれば、owner_idをparamsにマージできます –

+0

要求から来るIDの配列と私をマージする。 – Aarthi

0

一つの方法があるブロックを渡すことによって:属性が割り当てられた後

@post = Post.new(post_params) do |p| 
    p.owners << current_user 
end 

.newはブロックにレコードを生成します。

あなたはまた、協会からレコードを作成することができます

@post = current_user.posts.new(post_params) 

をしかし、最終結果は同じです:

@post = Post.new(post_params) 
@post.users << current_user 

私はのparamsと周りのサルではないだろう、それだけでmuddlesとして提案されているようコントローラーで何が起こっているのか。

関連する問題