acts_as_list на has_many: through и sortablejs - PullRequest
0 голосов
/ 24 марта 2020

У меня довольно большой вопрос, который я не смог решить после целого дня чтения статей, документации и других вопросов по стеку. На данный момент это просто мешает мне в уме!

У меня есть приложение Vue / Vuetify на веб-интерфейсе с таблицей данных, которую я хочу изменить с помощью сортируемой js. На бэкенде у меня есть Rails API, который я хотел бы использовать для действия с перестановкой для этого, используя Act_as_list.

В идеале Я мог бы вызвать что-то вроде Category.first.items.last.move_higher, однако, поскольку у меня есть модель соединения, я должен поставить acts_as_list и столбец позиции в модели соединения вместо модели товара. Есть ли лучший способ устроить это?

category.rb

class Category < ApplicationRecord
  has_many :categories_items
  has_many :items, through: :categories_items, source: :item

  accepts_nested_attributes_for :items

end

item.rb

class Item < ApplicationRecord
  has_many :categories_items
  has_many :categories, through: :categories_items, source: :category

end

Categories_item.rb

class CategoriesItem < ApplicationRecord
  belongs_to :category
  belongs_to :item

  acts_as_list scope: :category
end

1 Ответ

0 голосов
/ 25 марта 2020

С этой структурой вам определенно нужно изменить порядок, вызвав методы в модели соединения. Однако вы можете использовать метод класса Rails delegate для делегирования методов переупорядочения модели соединения, если вам нравится:

https://api.rubyonrails.org/classes/Module.html#method -i-делегат

Все это предполагает, что вам нужно items и categories, чтобы иметь отношение типа has_and_belongs_to_many.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...