Я изо всех сил пытаюсь управлять таблицей соединений, у которой есть целое число, цель которого - использовать его в качестве индекса или метки для связанных записей. Допустим, таблица соединения равна
class Pair < ActiveRecord::Base
belongs_to :owner
belongs_to :element
validates_presence_of :position
end
С подразумеваемой настройкой
class Element < ActiveRecord::Base
has_many :pairs
has_many :owners through :pairs
end
class Owner < ...
has_many :pairs
has_many :elements through :pairs
end
и позицией является вес или индекс, который ранжирует элементы, принадлежащие владельцу
Теперь я хочу, на коллекции owner.elements
:
- Выберите ровно один элемент с заданным значением
position
.
- используйте
owner.elements<<
для создания нового соединения между известным элементом и владельцем, но в то же время присваивайте ссылке вес / позицию.
Единственная мысль, которую мне удалось потренировать, - это игнорировать и работать напрямую с join_table, перегружая оператор []
для него сахаром. Можно было бы ожидать, что существует какое-то более рациональное решение, возможно, с использованием областей с параметрами, но я не понимаю, как я мог бы передать атрибут позиции операциям create
или <<
.
Учитывая, что элемент отлично идентифицирован владельцем и положением, решение с каким-то динамическим параметром в has_one through
также будет допустимым.