Как я могу сохранить двойное вложенное множество ко многим? - PullRequest
1 голос
/ 04 марта 2020

У меня есть три модели :request, :access_account и :permission.

class Request < ApplicationRecord
  has_many :access_account_requests
  has_many :access_accounts, through: :access_account_requests
end

class AccessAccount < ApplicationRecord
  has_many :permissions  
  has_many :access_account_requests
  has_many :requests, through: :access_account_requests
end

class Permission < ApplicationRecord
  belongs_to :access_account
  has_and_belongs_to_many :access_account_requests_permissions
end

A :request и :access_account связаны через модель :access_account_request, так как запрос может иметь много :access_accounts, а access_account может иметь много :requests.

class AccessAccountRequest < ApplicationRecord
  belongs_to :access_account
  belongs_to :request
  has_and_belongs_to_many :access_account_requests_permissions
end

Я присоединился к :request и :access_account таким образом, потому что думал как-то соединить :access_account_request с :permission, чтобы определить спецификацию c :permissions для каждого :access_account_request. Например:

class AccessAccountRequestPermission < ApplicationRecord
  belongs_to :access_account_request
  belongs_to :permission
end

Пользователь может создать :request, чтобы получить доступ к нескольким :access_accounts с несколькими :permissions. Поэтому мне нужно создать форму для :request, где я смогу выбрать несколько :access_accounts, а затем выбрать несколько :permissions, связанных с каждым :access_account.

Я думал о коконе и попробуйте collection_check_boxes или, возможно, многошаговую форму.

Пожалуйста, сообщите, если есть какой-то лучший способ спроектировать отношения между моделями или как я мог бы go об этом, чтобы создать довольно простую форму.

...