упорядочение отношений many_to_many в рельсах - PullRequest
0 голосов
/ 21 ноября 2018

Я хотел бы реализовать перетаскивание списка элементов в списке воспроизведения.Содержимое списка воспроизведения имеет различные типы активных записей.Мне нужно сохранить позицию и сохранить ее в базе данных и обработать порядок с помощью act_as_list.Я не уверен, что правильно строю ассоциации.

Я построил отношения has_many_through , используя таблицу соединений, но я не уверен, как заставить действовать activ_as_list с этой конфигурацией.

Мои модели выглядят так:

class Playlist < ActiveRecord::Base

  belongs_to :group
  belongs_to :user

  has_many :links, through: :playlists_contents dependent: :destroy
  has_many :medias,  through: :playlists_contents dependent: :destroy
end

Моя миграция для таблицы соединений выглядит следующим образом:

class CreateJoinTable < ActiveRecord::Migration[5.0]
  def change
    create_table :contents_playlists do |t|
      t.belongs_to :link, index: true
      t.belongs_to :media, index: true
      t.belongs_to :playlist, index: true
    end
  end

У меня есть это в моей модели таблицы соединений:

class PlaylistsContents < ActiveRecord::Base

  default_scope -> { order(position: :asc) }

  default_scope :order => 'position'
  belongs_to :playlist
  belongs_to :link
  belongs_to :media
  acts_as_list :scope => :link
  acts_as_list :scope => :media

end

1 Ответ

0 голосов
/ 21 ноября 2018

Вам потребуется поле position в таблице contents_playlists (или playlists_contents - так как модель называется PlaylistsContents?).Вы можете добавить несколько областей, используя:

acts_as_list scope: [:playlist, :link, :media]

Редактировать: добавлено :playlist

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