我是Rails的新手.我正在构建我的第一个应用程序 - 简单的博客.我有User和Post模型,每个用户可以写很多帖子.现在我想添加评论模型,每个帖子可以有很多评论,每个用户也可以评论任何其他用户创建的任何帖子.
在评论模型中我有
id \ body \ user_id \ post_id
列.
模型关联:
user.rb
has_many :posts, dependent: :destroy
has_many :comments
Run Code Online (Sandbox Code Playgroud)
post.rb
has_many :comments, dependent: :destroy
belongs_to :user
Run Code Online (Sandbox Code Playgroud)
comment.rb
belongs_to :user
belongs_to :post
Run Code Online (Sandbox Code Playgroud)
那么如何在CommentsController中正确定义创建动作呢?谢谢.
更新:
routes.rb
resources :posts do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
comments_controller.rb
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(comment_params)
if @comment.save
redirect_to @post
else
flash.now[:danger] = "error"
end
end
Run Code Online (Sandbox Code Playgroud)
结果是
--- !ruby/hash:ActionController::Parameters
utf8: ?
authenticity_token: rDjSn1FW3lSBlx9o/pf4yoxlg3s74SziayHdi3WAwMs=
comment: !ruby/hash:ActionController::Parameters
body: test
action: create
controller: comments
post_id: '57'
Run Code Online (Sandbox Code Playgroud)
我们可以看到它不会发送user_id,只有当我validates :user_id, …