У меня есть модель Artboard и группа моделей, которая имеет отношение многие ко многим через таблицу ArtboardsGroups, которая имеет атрибуты для значений x и y, относящихся к отношению
class Artboard < ApplicationRecord
has_many :artboards_groups, dependent: :destroy
has_many :groups, -> { select("groups.id as id, groups.name as name, artboards_groups.x as x, artboards_groups.y as y, artboards_groups.index as index, artboards_groups.r as r") }, through: :artboards_groups
end
class ArtboardsGroup < ApplicationRecord
belongs_to :artboard
belongs_to :group
end
class Group < ApplicationRecord
has_many :artboards_groups, dependent: :destroy
has_many :artboards, through: :artboards_group
end
Модель отлично работаетхорошо, когда я пытаюсь получить к нему доступ самостоятельно, но когда я пытаюсь выбрать группы через артборд и получить доступ к атрибуту 'y', я получаю сообщение об ошибке, что это закрытый метод
NoMethodError: private method `y' called for #<Group id: 5, name: nil>
В соответствии с этим thread (более 10 лет назад) это связано с тем, что в ActiveRecord :: Base есть имя частного метода с именем 'y' /lib/ruby/2.5.0/psych/y.rb, котороепроисходит от гема с именем psych , который является парсером yaml
Я не хочу менять имя атрибута для 'y', учитывая, что оно ссылается на систему координат и (x, y)является стандартом для координат. Есть ли другой способ справиться с этим?