gpt4 book ai didi

ruby-on-rails - 向 User 和 Post 模型添加评论 (Ruby on Rails)

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:03 26 4
gpt4 key购买 nike

我是 Rails 新手。我正在构建我的第一个应用程序 - 简单的博客。我有 User 和 Post 模型,每个用户可以在其中写很多帖子。现在我想添加 Comment 模型,每个帖子可以有很多评论,而且每个用户都可以评论任何其他用户创建的任何帖子。
在 Comment 模型中,我有

id \ body \ user_id \ post_id

columns.
Model associations:
user.rb

has_many :posts,    dependent: :destroy
has_many :comments

post.rb

has_many :comments, dependent: :destroy
belongs_to :user

comment.rb

belongs_to :user
belongs_to :post

那么如何在 CommentsController 中正确定义创建操作?谢谢。

更新:
路线.rb

resources :posts do
resources :comments
end

评论 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

结果是

--- !ruby/hash:ActionController::Parameters
utf8: ✓
authenticity_token: rDjSn1FW3lSBlx9o/pf4yoxlg3s74SziayHdi3WAwMs=
comment: !ruby/hash:ActionController::Parameters
body: test
action: create
controller: comments
post_id: '57'

正如我们所见,它不会发送 user_id,并且仅当我从 comment.rb 中删除 validates :user_id, presence: true 字符串时才起作用

有什么建议吗?

最佳答案

按照你的方式,你应该这样写:

def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(comment_params)
@comment.user_id = current_user.id #or whatever is you session name
if @comment.save
redirect_to @post
else
flash.now[:danger] = "error"
end
end

而且您还应该从 comment_params 中删除 user_id 作为强参数。希望这对您有所帮助。

关于ruby-on-rails - 向 User 和 Post 模型添加评论 (Ruby on Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24470896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com