# == Schema Information
#
# Table name: research_outputs
#
# id :integer not null, primary key
# abbreviation :string
# fullname :string
# is_default :boolean default(FALSE)
# order :integer
# other_type_label :string
# pid :string
# created_at :datetime not null
# updated_at :datetime not null
# plan_id :integer
# research_output_type_id :integer
#
# Indexes
#
# index_research_outputs_on_plan_id (plan_id)
# index_research_outputs_on_research_output_type_id (research_output_type_id)
#
# Foreign Keys
#
# fk_rails_... (plan_id => plans.id)
# fk_rails_... (research_output_type_id => research_output_types.id)
#
class ResearchOutput < ActiveRecord::Base
include ValidationMessages
# ================
# = Associations =
# ================
belongs_to :plan
belongs_to :research_output_type
has_many :answers, dependent: :destroy
# ===============
# = Validations =
# ===============
validates :abbreviation, presence: { message: PRESENCE_MESSAGE }
validates :fullname, presence: { message: PRESENCE_MESSAGE }
validates :research_output_type, presence: { message: PRESENCE_MESSAGE }
# ==========
# = Scopes =
# ==========
default_scope { order(order: :asc) }
# =================
# = Class methods =
# =================
def main?
eql?(plan.research_outputs.where(order: 1).first)
end
# Return main research output
def get_main
plan.research_outputs.first
end
def has_common_answers?(section_id)
self.answers.each do |answer|
if answer.question_id.in?(Section.find(section_id).questions.pluck(:id)) && answer.is_common
return true
end
end
return false
end
##
# deep copy the given research output
#
# Returns Research output
def self.deep_copy(research_output)
research_output.dup
end
end