使用具有自己关系的联结表

时间:2018-06-12 19:35:25

标签: ruby-on-rails activerecord rails-activerecord

我正在创建一个具有UserPlugin模型的应用。用户可以有多个插件,插件可以属于多个用户,我已经使用联结表实现了。

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 :(得分:0)

我认为你错误地命名了你的班级,因为该表是user_plugins但模型是UserPlugin。因此,你遇到问题是合理的。

同意Alex。为什么不在UserPlugin调用选项上创建一个json字段,并在此处保留插件特定值的哈希值。

如果您必须有另一张桌子,则应在has_one :user_plugin_option

中添加UserPlugin