We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
42 lines
1.1 KiB
Ruby
42 lines
1.1 KiB
Ruby
class Poll::BallotSheet < ApplicationRecord
|
|
belongs_to :poll
|
|
belongs_to :officer_assignment
|
|
has_many :ballots, class_name: "Poll::Ballot"
|
|
|
|
validates :data, presence: true
|
|
validates :poll_id, presence: true
|
|
validates :officer_assignment_id, presence: true
|
|
|
|
def author
|
|
officer_assignment.officer.name
|
|
end
|
|
|
|
def verify_ballots
|
|
parsed_ballots.each_with_index do |investment_ids, index|
|
|
ballot = create_ballots(investment_ids, index)
|
|
ballot.verify
|
|
end
|
|
end
|
|
|
|
def parsed_ballots
|
|
data.split(/[;\n]/)
|
|
end
|
|
|
|
private
|
|
|
|
def create_ballots(investment_ids, index)
|
|
poll_ballot = Poll::Ballot.where(ballot_sheet: self,
|
|
data: investment_ids,
|
|
external_id: index).first_or_create!
|
|
create_ballot(poll_ballot)
|
|
poll_ballot
|
|
end
|
|
|
|
def create_ballot(poll_ballot)
|
|
Budget::Ballot.where(physical: true,
|
|
user: nil,
|
|
poll_ballot: poll_ballot,
|
|
budget: poll.budget).first_or_create!
|
|
end
|
|
end
|