Files
old-roraccounting/app/models/chip_value.rb
2020-09-04 04:07:43 +03:00

53 lines
1.6 KiB
Ruby

class ChipValue < ApplicationRecord
belongs_to :base_chip, class_name: 'Chip'
belongs_to :secondary_chip, class_name: 'Chip'
validates :base_chip_id, uniqueness: { scope: :secondary_chip_id }
def self.create_full_chip_value(params)
base_chip_id = params[:base_chip_id]
secondary_chip_id = params[:secondary_chip_id]
value = params[:value].to_f
chips = Chip.where(id: [base_chip_id, secondary_chip_id])
base_chip = chips.first
secondary_chip = chips.second
mirrored_value = value.zero? ? 0 : (1 / value)
base_chip_value = ChipValue.new(base_chip: base_chip, secondary_chip: secondary_chip, value: value)
mirrored_chip_value = ChipValue.new(base_chip: secondary_chip, secondary_chip: base_chip, value: mirrored_value)
transaction do
base_chip_value.save
mirrored_chip_value.save
end
end
def self.update_full_chip_value(params)
id = params[:id]
new_value = params[:value].to_f
mirrored_value = new_value.zero? ? 0 : (1 / new_value)
chip_value = ChipValue.find(id)
mirrored_chip_value = ChipValue.where(base_chip_id: chip_value.secondary_chip_id, secondary_chip_id: chip_value.base_chip_id).first
chip_value.value = new_value
mirrored_chip_value.value = mirrored_value
transaction do
chip_value.save
mirrored_chip_value.save
end
end
def self.destroy_full_chip_value(id)
chip_value = ChipValue.find(id)
mirrored_chip_value = ChipValue.where(base_chip_id: chip_value.secondary_chip_id, secondary_chip_id: chip_value.base_chip_id).first
transaction do
chip_value.destroy
mirrored_chip_value.destroy
end
end
end