Files
nairobi/app/models/legislation/question.rb
2019-06-03 12:34:25 +02:00

55 lines
1.7 KiB
Ruby

class Legislation::Question < ApplicationRecord
acts_as_paranoid column: :hidden_at
include ActsAsParanoidAliases
include Notifiable
translates :title, touch: true
include Globalizable
belongs_to :author, -> { with_hidden }, class_name: "User", foreign_key: "author_id"
belongs_to :process, class_name: "Legislation::Process", foreign_key: "legislation_process_id"
has_many :question_options, -> { order(:id) }, class_name: "Legislation::QuestionOption", foreign_key: "legislation_question_id",
dependent: :destroy, inverse_of: :question
has_many :answers, class_name: "Legislation::Answer", foreign_key: "legislation_question_id", dependent: :destroy, inverse_of: :question
has_many :comments, as: :commentable, dependent: :destroy
accepts_nested_attributes_for :question_options, reject_if: proc { |attributes| attributes.all? { |k, v| v.blank? } }, allow_destroy: true
validates :process, presence: true
validates_translation :title, presence: true
scope :sorted, -> { order("id ASC") }
def next_question_id
@next_question_id ||= process.questions.where("id > ?", id).sorted.limit(1).pluck(:id).first
end
def first_question_id
@first_question_id ||= process.questions.sorted.limit(1).pluck(:id).first
end
def answer_for_user(user)
answers.where(user: user).first
end
def comments_for_verified_residents_only?
true
end
def comments_closed?
!comments_open?
end
def comments_open?
process.debate_phase.open?
end
def best_comments(number)
Comment.where(commentable_id: id)
.where(commentable_type: "Legislation::Question")
.order("cached_votes_up - cached_votes_down DESC")
.take(number)
end
end