2010-12-23 39 views
2

我想在的has_many和belongs_to的關係rails - 如何設置有多個/屬於關係的新記錄的id值?

用戶的hasMany職位和在創建記錄通過belongsTo用戶

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

,但我不斷收到一個錯誤的號碼參數錯誤。

我可以以某種方式自動設置Post模型的user_id字段嗎?我正在使用Devise,它是current_user調用的來源。

回答

7

一對夫婦更多的方法:

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

或者:

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

合併的params[:post]哈希與{:user_id => current_user.id}

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

Hash#merge

-2

如果您使用簡單的has_many和belongs_to關聯,則不需要在用戶表中具有post_id列。目前只需要在職位表

有了一個user_id列,你可以這樣做:

@post = Post.new(params[:post]) 
@post.user_id = session[:user_id] #or an equivalent. 
@post.save 
@user.posts << @post 
+0

這是反向的,錯誤的。 OP的模式是正確的。您的示例代碼不會執行您所描述的內容。 – 2010-12-23 09:08:58

相關問題