Rails - Comment puis-je configurer l'identifiant du nouveau record du modèle a beaucoup de / appartient à la relation?

StackOverflow https://stackoverflow.com/questions/4517033

Question

Je suis en train de créer un enregistrement que dans un has_many et belongs_to relation

messages hasMany utilisateur et les messages belongto utilisateur

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

mais je suis continue de recevoir un faux numéro d'erreur d'arguments.

Puis-je définir le champ user_id du modèle Post automatiquement en quelque sorte? J'utilise ce qui est où Devise l'appel current_user vient.

Était-ce utile?

La solution

Un couple de différentes manières:

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

Ou:

@post = current_user.posts.build(params[:post])
@post.save

Autres conseils

Fusionner le hachage params[:post] avec {:user_id => current_user.id}:

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

Voir Hash#merge

Si vous utilisez has_many simple et belongs_to associations, il n'a pas besoin d'être une colonne de post_id dans la table des utilisateurs. Il doit seulement être une colonne user_id dans le tableau des messages

Avec que vous pouvez faire:

@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top