30 lines
774 B
Ruby
30 lines
774 B
Ruby
class Point < ApplicationRecord
|
|
include Discard::Model
|
|
MAX_AXIS_SIZE = 50_000 # No one has an
|
|
# axis value > 21k right now - RC
|
|
# Using real constants instead of strings results
|
|
# in circular dep. errors.
|
|
POINTER_KINDS = ["GenericPointer", "Plant", "ToolSlot", "Weed"]
|
|
self.inheritance_column = "pointer_type"
|
|
|
|
belongs_to :device
|
|
validates_presence_of :device
|
|
has_many :point_group_items, dependent: :destroy
|
|
|
|
after_discard :maybe_broadcast
|
|
|
|
[:x, :y, :z].map do |axis|
|
|
validates_numericality_of axis, less_than: MAX_AXIS_SIZE
|
|
end
|
|
|
|
def name_used_when_syncing
|
|
"Point"
|
|
end
|
|
|
|
def fancy_name
|
|
n = InUsePoint::FANCY_NAMES[pointer_type] ||
|
|
InUsePoint::DEFAULT_NAME
|
|
"#{n} at (#{x}, #{y}, #{z})"
|
|
end
|
|
end
|