# User model
has_many :forums
has_many :posts
# Forum model
belongs_to :user
has_many :posts
# Post model
belongs_to :user
belongs_to :forum
我的post
表单嵌套在forum
中。我想使用所需的forum_id
和user_id
初始化表单,以便最后可以正确保存。
这是我的(失败)尝试。
# posts_controller
def new
@post = current_user.forums.find(params[:forum_id]).posts.new
end
这就是@post得到的结果:
# @post
#<Post id: nil, title: nil, description: nil, user_id: nil, forum_id: 1, created_at: nil, updated_at: nil>
也许我根本没有这样做。我想找到最好的做法,或者只是一种比强迫事情更好的选择。
将user_id
一直带到表单中直到它的创建会更好吗?
有没有更好的方式让我看不到?
答案 0 :(得分:1)
您可以使用build
:
@post = Forum.find(params[:forum_id]).posts.build
答案 1 :(得分:0)
你可以尝试
@post = Post.new(user_id: current_user.id, forum_id: params[:forum_id])
答案 2 :(得分:0)
您必须单独设置user_id,因为它不会由forum.posts.new
设置
forum = current_user.forums.find(params[:forum_id])
@post = forum.posts.new(user_id: current_user.id)