2

has_many と belongs_to の関係にあるレコードを作成しようとしています

ユーザーには多くの投稿があり、投稿はユーザーに属しています

@post = Post.new( params[:post], :user_id => current_user.id )
@post.save

しかし、間違った数の引数エラーが発生し続けます。

どういうわけか、Post モデルの user_id フィールドを自動的に設定できますか? current_user の呼び出し元である Devise を使用しています。

4

3 に答える 3

7

さらにいくつかの方法:

@post = Post.new(params[:post])
@post.user_id = current_user.id
@post.save

または:

@post = current_user.posts.build(params[:post])
@post.save
于 2010-12-23T09:00:42.050 に答える
3

params[:post]ハッシュを{:user_id => current_user.id}:とマージします

@post = Post.new(params[:post].merge({:user_id => current_user.id}))
@post.save

見るHash#merge

于 2010-12-23T08:58:00.543 に答える
-2

単純な has_many および belongs_to 関連付けを使用している場合、users テーブルに post_id 列は必要ありません。posts テーブルには user_id 列だけが必要です

それでできること:

@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
于 2010-12-23T09:02:29.687 に答える