Использование соединительной таблицы со своими собственными отношениями - PullRequest
0 голосов
/ 12 июня 2018

Я создаю приложение с моделью User и Plugin.У пользователя может быть несколько плагинов, и плагин может принадлежать нескольким пользователям, что я реализовал с помощью таблицы соединений.

class Plugin < ActiveRecord::Base
  has_many :user_plugins
  has_many :users, through: :user_plugins
end


class User < ActiveRecord::Base
  has_many :user_plugins
  has_many :plugins, through: :user_plugins
end


class UserPlugins < ActiveRecord::Base
  belongs_to :user
  belongs_to :plugin
end

Однако затем я хочу сохранить произвольные данные для каждого пользовательского плагина (например,такие вещи, как ключи API, параметры и т. д., которые могут отличаться для каждого плагина.).

Мой первоначальный подход состоял в том, чтобы объединить user_plugins_options в user_plugins, но я не могу этого добитьсяработать правильно.

class UserPluginOptions < ActiveRecord::Base
  belongs_to :user_plugins
end

Мой вопрос, как мне подойти к этому, чтобы лучше всего работать с ActiveRecord?

1 Ответ

0 голосов
/ 13 июня 2018

Я думаю, вы неправильно назвали свой класс, так как таблица user_plugins, а модель - UserPlugin.Вероятно, вы столкнулись с проблемами из-за этого.

Согласен с Алексом.Почему бы вам не создать поле json для UserPlugin вызываемых опций и оставить здесь хэш значений, специфичных для плагина.

Если вам нужна другая таблица, вы должны добавить has_one :user_plugin_option к UserPlugin

...