我正在尝试创建一个has_many和belongs_to关系中的记录
用户有很多帖子和帖子属于用户
@post = Post.new( params[:post], :user_id => current_user.id )
@post.save
但我一直错误地收到错误的数量。
我能以某种方式自动设置Post模型的user_id字段吗?我正在使用Devise,这是current_user调用的来源。
答案 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