rails - 如何设置具有多个/属于关系的模型的新记录的id值?

时间:2010-12-23 08:35:14

标签: ruby-on-rails has-many belongs-to

我正在尝试创建一个has_many和belongs_to关系中的记录

用户有很多帖子和帖子属于用户

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

但我一直错误地收到错误的数量。

我能以某种方式自动设置Post模型的user_id字段吗?我正在使用Devise,这是current_user调用的来源。

3 个答案:

答案 0 :(得分:7)

还有几种方式:

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

或者:

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

答案 1 :(得分:3)

params[:post]哈希与{:user_id => current_user.id}合并:

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

请参阅Hash#merge

答案 2 :(得分:-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