通过current_user

时间:2017-04-10 18:03:27

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

概述

我有一个评论列表,其中current_user可以回复新评论或投票评论。现在,我正在尝试创建一个视图强制用户回复新评论或仅投票评论。

任务

通过current_user查找没有回复(投票或评论)的评论。

模型

评论模型

class Comment < ApplicationRecord
  belongs_to :question
  belongs_to :user
  belongs_to :parent,  class_name: 'Comment', optional: true
  has_many :replies, class_name: 'Comment', foreign_key: :parent_id, dependent: :destroy
  has_many :votes, dependent: :destroy
end

投票型号

class Vote < ApplicationRecord
  belongs_to :user
  belongs_to :comment
end

问题

这是否可以通过良好的性能为其创建一个activerecord查询?或者,每当用户在 pending_replies 之类的新表格中创建评论时,创建记录会更容易,还是在创建回复时删除?

任何提示和起点都是惊人的

1 个答案:

答案 0 :(得分:1)

我认为这太糟糕了,不容易理解。

# user.rb

# Rails 4
def comments_with_no_vote_or_reply
  Comment.where.not(:id => votes.pluck(:comment_id) + replies.pluck(:parent_id))
end

# Rails 3
def comments_with_no_vote_or_reply
  Comment.where("comments.id not in (?)", votes.pluck(:comment_id) + replies.pluck(:parent_id))
end