【问题标题】:acts_as_commentable can I create without updating?act_as_commentable 我可以在不更新的情况下创建吗?
【发布时间】:2014-09-03 11:02:21
【问题描述】:

我用来在 Post 对象上创建评论的当前控制器代码是这样的:

    commentable = @post
    comment = commentable.comments.create
    # comment.title = params[:title] #Title not needed
    comment.comment = params[:comment][:comment]
    comment.user = current_user

    gon.post_id = @post.id #for javascript

    if comment.save
    ....

这也是文档中推荐的方式。

有没有办法通过将参数传递给 .create 函数来做到这一点,比如

(user = current_user ....)

这避免了在创建时对数据库进行 2 次调用,从而提高了性能。

此外,如果您使用 public_activity gem,它也会使事情变得更容易。因为每次我写评论时,它都会在我的数据库中添加一个 Created and Updated 活动。

感谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 acts-as-commentable


    【解决方案1】:

    在 Rails 应用程序中包含可评论模型的更简单方法..Railscasts for adding commentable

    【讨论】:

    • 虽然添加可评论模型并不太难。我不同意它比使用 gem 更简单;前提是我可以在一个数据库查询中构建评论。
    • @DavidSigley 但是当有多个 cmet 以及来自多个用户的多个模型的可评论模型的回复时,您的代码将会增加
    • 您介意解释一下您认为它会如何增加吗?我已经在使用多个模型,但我仍然认为我的代码不会增加。
    【解决方案2】:

    哦,其实很简单。

     comment = commentable.comments.create(:comment => params[:comment], :user => current_user)
    

    如果您正在使用该功能,请添加 :title。

    我不明白为什么这不是文档中提供的解决方案?我可能应该修改它以使用

    create(comment_params) 
    

    【讨论】:

      猜你喜欢
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2010-10-13
      • 1970-01-01
      • 2017-06-12
      • 2013-07-19
      相关资源
      最近更新 更多